声明
sTemp : stirng;
pTemp : pChar;pchar 转  string1 StrpCopy(pTemp,sTemp);
2 sTemp := pTemp;
3 sTemp := String(pTemp);string 转 pchar1 pTemp := pchar(sTemp);请高手说明一下每种转换方法的不同这处.
请朋友加上其它的类型转换(int转string)等,完善此贴.

解决方案 »

  1.   


    sTemp := pTemp;  和  sTemp := String(pTemp);  完全等价在最终生成的EXE文件中, 它们对应的代码也是相同的例如: 
    procedure A(sTemp: String; pTemp: PChar);
    begin
      sTemp := pTemp;                     
      sTemp := String(pTemp);
    end;sTemp := pTemp;  和  sTemp := String(pTemp); 对应的汇编代码都是:
    lea eax, [ebp-$04]    //sTemp
    mov edx, [ebp-$08]    //pTemp
    call @LStrFromPChar
      

  2.   

    var
    s: string;
    p: PChar;转换方式:1. PChar转string
    s := p;2. string转PChar
    p := PChar(s);从语法上来看,转换很简单,实际上编译器做了很多工作。具体可以看看《Delphi源代码分析》。