小问题!!!!(20分)

  • 主题发起人 Distachio
  • 开始时间
D

Distachio

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位说说pchar 与string 的区别
最好是举例说的明了些!!!
assigned 是干什么用的 返回什么值 ?????
 
两者可以兼容。除了使用上,其它没什么区别。
pchar是个以null结束的字串指针。
string是指明了长度及内容的内存(空间?)
 
那么 assigned()函数呢?有什么意思!!
 
delphi的pchar是个怪胎。是为了于win32的以null结束的字符串兼容的产物
一般用于Win32api的调用和VC输出的动态库函数的调用。
但pchar并非 char指针即^char。delphi编译器对pchar做了特殊处理。
如:
var
pStr:pchar;
//可以声明为^char试试
begin
pStr:=nil;
new(pStr);
strpcopy(pStr,'hello');
//
showmessage(pstr);
dispose(pStr);
pStr:=nil;
end;
另外,如果对指针不熟悉完全可以用char数组代替pchar。
string是delphi的字符串类型,包括shortstring,ansistring(widestring)。
对于长字符串AnsiString或WideString(unicode),其实是动态char数组,
其位置从1开始,(0储存了长度等其他内容)。
不过string的结尾也自动加了Null,与pchar可以方便的转换。
assigned 用来判断指针包括对象(delphi的对象创建于堆上,对象名为指针)
是否为Nil。


 
assigned()函数是用来判断一个指针是否为空的。如:
var P: Pointer;
begin
P := nil;
if Assigned (P) then
Writeln ('You won''t see this');
GetMem(P, 1024); {P valid}
FreeMem(P, 1024); {P no longer valid and still not nil}
if Assigned (P) then
Writeln ('You''ll see this');
end;
另外:pchar相当于一个指向以null结尾的字符串的指针,再指定pchar类型后,还要用
getmem()函数给它划分区域,用完后,要用freemem()释放内存空间。
 
接受答案了.
 

Similar threads

回复
0
查看
750
不得闲
回复
0
查看
736
不得闲
S
回复
0
查看
992
swish
S
S
回复
0
查看
986
SUNSTONE的Delphi笔记
S
顶部