呵呵,偶也来说两句:
1、PCHAR一般是用来调用API的,因为API中没有STRING类型,只有指针类型,所以就
还有,你看看以下信息:
来自:柳五公子, 时间:1998-10-22 14:17:00, ID:64988
1. String是Pascal使用的字符串格式.它分为ShortString,
WideString和AnsiString,String缺省为AnsiString.
ShortString的最大长度为255个字符.
AnsiString 的最大长度为2^31个字符.
WideString 的最大长度为2^30个字符.
AnsiString和WideString的区别在于字符集的不同.
AnsiString对应于AnsiChar,WideString对应于WideChar.
具体你可以参考Delphi Help中String Type帮助.
2. PChar是Delphi为了和C语言的字符串类型(char *)兼容,
以便调用Windows API而建立的数据类型.所以pchar实际是
一个指针.一般使用方法是:
pchar eg1
GetMem(eg1,Size)
//你程序中出错就是因为没有为它分配内存
...
FreeMem(eg1,Size)
你还可以用以下方法
eg2 :array[0..Size] of char
然后可以把eg2看作pchar来用,且它已预先分配了内存.
要注意的是定义eg2的字符数组下界必须是0 !否则将会出现错误.
3. 在Delphi 1.0中的String和PChar的相互转换为:
function StrPas(str
char):string
function StrPCopy(Dest
char;Source:string)
char
在Delphi 2.0和更高版本中的String和PChar的相互转换很简单:
String ->Pchar: pch :=Pchar(str)
Pchar ->String: str :=pch
4. String和pchar的内存实现方法略有不同(虽然他们实际上都是指针),
所以你的例程中不能用pchar(str)来将返回值强制放入str中,而要首先
用一个pchar型变量获得返回值(首先需为其分配内存),然后用
str:=pAddress转换为string型放入str中.
###