关于类型转换的讨论
声明
sTemp : stirng;
pTemp : pChar;
pchar 转 string
1 StrpCopy(pTemp,sTemp);
2 sTemp := pTemp;
3 sTemp := String(pTemp);
string 转 pchar
1 pTemp := pchar(sTemp);
请高手说明一下每种转换方法的不同这处.
请朋友加上其它的类型转换(int转string)等,完善此贴.
[解决办法]
不明白讨论的目的是什么?
[解决办法]
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] //sTempmov edx, [ebp-$08] //pTempcall @LStrFromPChar
[解决办法]
var
s: string;
p: PChar;
转换方式:
1. PChar转string
s := p;
2. string转PChar
p := PChar(s);
从语法上来看,转换很简单,实际上编译器做了很多工作。具体可以看看《Delphi源代码分析》。