首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-03-04 
关于类型转换的讨论声明sTemp : stirngpTemp : pCharpchar 转string1 StrpCopy(pTemp,sTemp)2 sTemp :

关于类型转换的讨论
声明
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源代码分析》。

热点排行