delphi char数组、string和Pchar的相互转换
1.string转换成pchar
可以使用pchar进行强制类型转换,也可以使用StrPCopy函数
var s:string; p,p1:PChar; begin s:='Hello Delphi'; p:=PChar(s); ShowMessage(p); p1:=StrAlloc(Length(s)+1); StrPCopy(p1,s); ShowMessage(p1); StrDispose(p1); end;
2.pchar转换成string
pchar可以直接当string用,也可以用strpas函数转换一下
var s,s1,s2:string; p:PChar; begin s:='Hello Delphi'; p:=PChar(s); ShowMessage(p); s1:=p; ShowMessage(s1); s2:=StrPas(p); ShowMessage(s2); end;
3.char数组转换成string
使用StrPas函数获取数组的首地址
var c:array [0..11] of Char; s:string; begin c[0]:='H'; c[1]:='e'; c[2]:='l'; c[3]:='l'; c[4]:='o'; c[5]:=' '; c[6]:='D'; c[7]:='e'; c[8]:='l'; c[9]:='p'; c[10]:='h'; c[11]:='i'; s:=StrPas(@c[0]); ShowMessage(s); end;
4.string转char数组
使用move或者copymemory函数
var s:string; c:array of Char; i:Integer; begin s:='Hello Delphi'; SetLength(c,Length(s)); //Move(s[1],c[0],Length(s));//move和CopyMemory都行 CopyMemory(@c[0],PChar(s),Length(s)); for i:=Low(c) to High(c) do begin ShowMessage(string(c[i])) end; end;
5.char数组转pchar
var c:array [0..11] of Char; p:PChar; begin c:='Hello Delphi'; //p:=@c[0]; p:=PChar(@c[0]); ShowMessage(StrPas(p)); end;
6.pchar转char数组
使用move或者CopyMemory函数
var s:string; p:PChar; c:array of Char; i:Integer; begin s:='Hello Delphi'; p:=PChar(s); SetLength(c,Length(s)); //Move(p^,c[0],Length(s));//move和CopyMemory都行 CopyMemory(@c[0],p,Length(s));; for i:=Low(c) to High(c) do begin ShowMessage(string(c[i])) end; end;