2个基础问题:如何修改PCHAR? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiBase/html/delphi_20061205132245286.html
1.如何增加字符到PCHAR?如:
p:pchar
GetWindowText(p....)
想在前面加上个'D'如何加?
(不要用STRING转换)
2.Delphi中最大数值类型是什么?
n:int64;
n:=24*256*256*256+19*256*256+204*256+26
编辑报错!! 如何解决?
第2个问题不会抱错,我刚测试了
function CharAddToPchar(p:pchar;c:char):pchar;
var
arr:array of char;
pIndex:integer;
pTemp:Pchar;
begin
setlength(arr,length(p)+1);
for pIndex:=0 to length(p)-1 do
arr[pIndex]:=p[pIndex];
arr[length(p)]:=c;
result:=@arr[0];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
p:pchar;
begin
p:=pchar('abcdef');
showmessage(strpas(CharAddToPchar(p,char('a'))));
end;
上面是我对第一个问题的回答。其中,函数内部变量声明了一个pTemp是多余的,请删去。
重新改写了一个:
Procedure CharAddToPchar(var p:pchar;c:char);
var
arr:array of char;
pIndex:integer;
begin
setlength(arr,length(p)+1);
arr[0]:=c;
for pIndex:=1 to length(p) do
arr[pIndex]:=p[pIndex-1];
p:=@arr[0];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
p:pchar;
begin
p:=pchar('abcdef');
CharAddToPchar(p,char('D'));
showmessage(strpas(p));
end;
与我在前面给出的那个有以下不同:
1、按楼主要求,把字符D加在了PCHAR指向的字串的前面;
2、使用了引用传值(最选给出的是函数,靠创建一个Pchar副本返回;而现在这个过程是直接改变原Pchar。
错误之处,请指正。
1.如何增加字符到PCHAR?如:
p:pchar
GetWindowText(p....)
想在前面加上个'D'如何加?
(不要用STRING转换)
PCHAR是个指向字符的指针,如果它指向一串字符串,那我们操作它所指的值时,可以通过指针访问.
如:
var
p:pchar;
str:string;
begin
str:='test';
p:=@str[1];
showmessage(p^);//---显示第一个字符
inc(p);
showmessage(p^);//---显示第二个字符
end;
如果要操作这个串,要用缓冲的办法,因为重新分配内空间才可以........
正如这样:(lihuasoft(学习低调做人) ( ) 信誉:100 Blog 所写函数)
重新改写了一个:
Procedure CharAddToPchar(var p:pchar;c:char);
var
arr:array of char;//--这个就是新的缓冲区.....
pIndex:integer;
begin
setlength(arr,length(p)+1);
arr[0]:=c;
for pIndex:=1 to length(p) do
arr[pIndex]:=p[pIndex-1];
p:=@arr[0];
end;
2.Delphi中最大数值类型是什么?
n:int64;
n:=24*256*256*256+19*256*256+204*256+26
//--24*(2^24)+19*(2^16)+204*(2^8)+26
编辑报错!! 如何解决?
int64 8bytes 表示2的64次方;
Int64 -2^63..2^63-1 signed 64-bit
嘎嘎...辣椒...我多日不到群里去了
^__^
我也好些日子没有去群里面混了.
谢谢!
趁机再问1个小问题:(回答后立即结帐)
用POP3指令UIDL及RECR得到的MAIL内容好象都是编码后的例如(tbiBAdFOkBz86iTmgAAsd)
这种是什么编码方式? 如何解码??
估计是BASE64编码吧
奇怪!
为何pwidechar一用strlen就报错?
有何解决办法?
建议楼主重新发贴,利于别人回答。
因为你的新问题藏在旧贴里,别人很容易看不到。
回贴并不是义务
结贴却是一种美德