Delphi字符串、PChar与字符数组之间的转换
设有以下三个变量:
var
s:string;
p:pchar;
a:array[1..20] of char;
那么三者之间的转换如下:
1、字符串到PChar
p:=PChar(s);
2、PChar到字符串
s:=p;
3、PChar到字符数组
StrCopy(@a ,p);
4、字符数组到PChar
PChar(@a);
5、字符串与字符数组之间的转换就只有通过PChar来中转了。例如下面这个例子:
procedure TForm1.btn1Click(Sender: TObject);
var
str:array[1..10] of char;
begin
StrCopy(@str ,PChar(mmo1.Text));
mmo2.Text:=PChar(@str);
end;
var
c :string;
d :pchar;
e :^char;
f :pchar;
g,g1:Pchar;
h :^char;
i:integer;
begin
setlength(c,10);
for i:= 1 to 2 do
begin
c[i] := 'a';
end;
f := @c[1]; //内容
g := @c; //地址
g1 :=pchar(c); //内容,同d一样
e := @c[1]; //内容首地址
d := @c[1]; //内容
h := @c;
showmessage(f); //aa
showmessage(g); //把g赋值的是指针地址,显示当然是乱码了,可以改为一下句,显示内容
showmessage(g1);
showmessage(e^); //a
showmessage(d); //aa
showmessage(d^); //a
// showmessage(h); //错误 h,e是指针 不能按字符显示showmessage(IntToStr(integer(h)));
// showmessage(e); //错误
showmessage(c); //aa
end;