• 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;  
  • 相关阅读:
    b_lc_数组中最大数对和的最小值(排序+思维 | 进阶:第k)
    b_lc_使用服务器处理任务(模拟 + 堆)
    b_lc_插入后的最大值(贪心+区分正负数)
    b_lc_蓄水(反向思维:枚举取水次数)
    万能JDBC工具类【DBUtil 】
    Eureka服务注册中心
    springboot dubbo+zookeeper
    Thymleaf引擎模板
    多环境切换 & JSR303数据校验
    yaml配置注入
  • 原文地址:https://www.cnblogs.com/zyb2016/p/12377058.html
Copyright © 2020-2023  润新知