char、pchar、string互相转换

1.string转换成pchar

   可以使用pchar进行强制类型转换,也可以使用StrPCopy函数

[delphi] view plain copy
 
 
 
  1. var  
  2.   s:string;  
  3.   p,p1:PChar;  
  4. begin  
  5.   s:='Hello Delphi';  
  6.   p:=PChar(s);  
  7.   ShowMessage(p);  
  8.   p1:=StrAlloc(Length(s)+1);  
  9.   StrPCopy(p1,s);  
  10.   ShowMessage(p1);  
  11.   StrDispose(p1);  
  12. end;  



2.pchar转换成string

  pchar可以直接当string用,也可以用strpas函数转换一下

[delphi] view plain copy
 
 
 
  1. var  
  2.   s,s1,s2:string;  
  3.   p:PChar;  
  4. begin  
  5.   s:='Hello Delphi';  
  6.   p:=PChar(s);  
  7.   ShowMessage(p);  
  8.   s1:=p;  
  9.   ShowMessage(s1);  
  10.   s2:=StrPas(p);  
  11.   ShowMessage(s2);  
  12. end;  

3.char数组转换成string
   使用StrPas函数获取数组的首地址

[delphi] view plain copy
 
 
 
  1. var  
  2.   c:array [0..11] of Char;  
  3.   s:string;  
  4. begin  
  5.   c[0]:='H';  
  6.   c[1]:='e';  
  7.   c[2]:='l';  
  8.   c[3]:='l';  
  9.   c[4]:='o';  
  10.   c[5]:=' ';  
  11.   c[6]:='D';  
  12.   c[7]:='e';  
  13.   c[8]:='l';  
  14.   c[9]:='p';  
  15.   c[10]:='h';  
  16.   c[11]:='i';  
  17.   s:=StrPas(@c[0]);  
  18.   ShowMessage(s);  
  19. end;  

4.string转char数组

使用move或者copymemory函数

[delphi] view plain copy
 
 
 
  1. var  
  2.   s:string;  
  3.   c:array of Char;  
  4.   i:Integer;  
  5. begin  
  6.   s:='Hello Delphi';  
  7.   SetLength(c,Length(s));  
  8.   //Move(s[1],c[0],Length(s));//move和CopyMemory都行  
  9.   CopyMemory(@c[0],PChar(s),Length(s));  
  10.   for i:=Low(c) to High(c) do  
  11.   begin  
  12.     ShowMessage(string(c[i]))  
  13.   end;  
  14. end;  

5.char数组转pchar

[delphi] view plain copy
 
 
 
  1. var  
  2.   c:array [0..11] of Char;  
  3.   p:PChar;  
  4. begin  
  5.   c:='Hello Delphi';  
  6.   //p:=@c[0];  
  7.   p:=PChar(@c[0]);  
  8.   ShowMessage(StrPas(p));  
  9. end;  


6.pchar转char数组

使用move或者CopyMemory函数

[delphi] view plain copy
 
 
 
    1. var  
    2.   s:string;  
    3.   p:PChar;  
    4.   c:array of Char;  
    5.   i:Integer;  
    6. begin  
    7.   s:='Hello Delphi';  
    8.   p:=PChar(s);  
    9.   SetLength(c,Length(s));  
    10.   //Move(p^,c[0],Length(s));//move和CopyMemory都行  
    11.   CopyMemory(@c[0],p,Length(s));;  
    12.   for i:=Low(c) to High(c) do  
    13.   begin  
    14.     ShowMessage(string(c[i]))  
    15.   end;  
    16. end;  
原文地址:https://www.cnblogs.com/zyb2016/p/12377058.html