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;  

 

posted @ 2017-12-25 13:15  倾月轩萱  阅读(240)  评论(0编辑  收藏  举报