读书人

关于类型转换的讨论,该如何解决

发布时间: 2012-03-04 11:13:34 作者: rapoo

关于类型转换的讨论
声明
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)等,完善此贴.

[解决办法]
不明白讨论的目的是什么?
[解决办法]

Delphi(Pascal) code
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源代码分析》。

读书人网 >.NET

热点推荐