关于指针Pchar(HH)^的操作说明(50分)

  • 主题发起人 主题发起人 maikee1978
  • 开始时间 开始时间
M

maikee1978

Unregistered / Unconfirmed
GUEST, unregistred user!
var
HH:pointer;
begin
......
If Pchar(HH)^=#0 then
......
end;
关于Pchar(HH)^好迷茫,请人细解释一下。HH作为一个指针,是不是HH所指地址存放的内容转换为Pchar.然后再以所得的值为地址取得数据再做比较???


顺便再问一下。
实现IpersistFile接口时,什么时候给IPersist的GetClassId(Out ClassId:TCLSID)中的ClassId赋值???
我看了好多例子,在实现外壳链接、文件图标处理器中都没给ClassId值,但在信息提示处理器时却给值。不明白
 
说的有点不对,应该理解为:HH是一个无类型指针,所以先把它转化成PChar类型的指针,然后再取PChar(HH)地址所指上的值,是否为#O。
 
假使HH指向nil,那么进行下面操作后,是不是
StarLCat(Pchar(HH),'123456',1024);
Pchar(HH)^='123456'+#0
PInteger(HH)^=123456

顺便再问一下。实现IpersistFile接口时,什么时候给IPersist的GetClassId(Out ClassId:TCLSID)中的ClassId赋值???
我看了好多例子,在实现外壳链接、文件图标处理器中都没给ClassId值,但在信息提示处理器时却给值。不明白
 
HH是无类型Pointer,所以HH^取出的内容Delphi认为无法预知(强类型)。所以先把无类型Pointer内容强制转换成Char类型(Byte(8 bit))类型。
 
假使HH指向nil,那么进行下面操作后,
StarLCat(Pchar(HH),'123456',1024);
是不是
Pchar(HH)^='123456'+#0
PInteger(HH)^=123456啊?我自己试一下,如果是就理解了
 
多人接受答案了。
 
后退
顶部