请教 pointer?(10)

  • 主题发起人 主题发起人 jiangzs
  • 开始时间 开始时间
J

jiangzs

Unregistered / Unconfirmed
GUEST, unregistred user!
function GetStrAllocSize(const S: string): Longint;var P: ^Longint; //longInt 指针变量begin P := Pointer(S); dec(P, 3); Result := P^ and not $80000000 shr 1; end;一个 func的功能,请大家 解析一下 begin end 之间语句的功能。有点看不懂。
 
猜测下.第一句话应该没有意义.会被编译器忽略.最后应该是返回字符串S的偏移地址为-12(十进制)处的LoingInt型的一半.连着函数的话,应该是RETN 即C3, 而C3的一半是61(16进制)也就是97.所以这个函数我感觉没有什么道理.如果是想取长度,直接Length(S)或者 PInteger(Integer(S) - 4)^看是不是用在Dll中
 
接受答案了.
 

Similar threads

A
回复
0
查看
981
Andreas Hausladen
A
S
回复
0
查看
579
SUNSTONE的Delphi笔记
S
S
回复
0
查看
673
SUNSTONE的Delphi笔记
S
A
回复
0
查看
964
Andreas Hausladen
A
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部