有个语法的问题,请教高人(记录的引用)(300)

S

sim_might

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi中,结构体是不能重复引用的。比如以下形式就不行: TPro_AA = procedure(Var_1 : PBBB)
TAAA = packed record X: Longint
Y: Longint
AA : TPro_AA
end
PAAA = ^TAAA
TPro_BB = procedure(Var_1 : PAAA)
TBBB = packed record X: Longint
Y: Longint
BB : TPro_BB
end
PBBB = ^TBBB;=============================但如果是某些特殊的结构体 如 interface 可以用 在前面添加 接口的方式来重复引用。比如: IAA = interface
IBB = interface
IAA = interface (IUnknown) procedure A1(Var_1 : IBB)
stdcall
end
IBB = interface (IUnknown) procedure A1(Var_1 : IAA)
stdcall
end;===============================现在的 问题是 有没有办法让让普通的记录体 (第一种情况),也能像接口那样重复引用。 当然绕过的办法有很多。但都会改变逻辑结构。工作量太大。
 
D

dark_power

Unregistered / Unconfirmed
GUEST, unregistred user!
是你声明顺序的问题,如果你读过Online Books中的语言参考的话就不会问这个问题了。对于指针类型,是可以先行声明并使用的,但定义声明必须要在其后的代码中明确给出。type PAA= ^TAA
pBB= ^TBB
tpro_A= procedure(v1: PAA)
tpro_B= procedure(v2: pBB)
TAA= packed record a: Integer
pa: tpro_A
end
TBB= packed record b: Integer
pb: tpro_B
end;我在自己的机器上验证来着,没有遇到任何编译问题。至少是在我的机器上这样是可行的。
 
D

dark_power

Unregistered / Unconfirmed
GUEST, unregistred user!
俺不是啥高手,请以后问问题也不要动辄就摆擂,叫高手。有些问题,恐怕高手都是不屑于回答的。俺不回答是因为超出俺知识和能力范围的东东,俺都不敢回答,怕误人子弟。
 
Top Bottom