请教一个问题。(150分)

  • 主题发起人 主题发起人 tunick
  • 开始时间 开始时间
T

tunick

Unregistered / Unconfirmed
GUEST, unregistred user!
我的主程序在运行时提供一个可以随时启动的功能,
该功能又会开启另一个窗口(Form)和与其对应的线程(Thrd)。
在只启动一次的时候没有任何问题,可是我想启动多个这样的功能。
为了让线程知道其对应的窗口,我重载了线程的create
可是在声明的时候就出现了交叉。Form里面uses了thrd,
而在重载线程的create时,又uses了Form..
如果我不想声明另外的累来解决交叉问题,还有别的方法么?
 
一个在Interface的地方Uses
另一个在implementation的地方Uses
 
我在implentation之前就需要声明。
 
那把这个放在Interface中
另一个放在implementation里呵
试试
 
不是这样啊,我两边都有private里面的变量是对方的,必须是放在interface里面。
 
那把这部分放到公共单元里面
 
这是<Delphi 5开发人员指南>里的一段话:
你经常会碰到这样的情况,在U n i t A中调用U n i t B并在U n i t B中调用U n i t A,
这就被称为循环单元引用。循环单元引用的出现表明了程序设计有缺陷,应该在程序中避免
使用循环单元引用。比较好的解决方法是把U n i t A和U n i t B共有的代码移到第三个单元中。
然而,有时确实需要用到循环单元引用,这时就必须把一个u s e s子句移到
i m p l e m e n t a t i o n部分,而把另一个留在i n t e r f a c e部分,
这样就能解决问题。
 
TAClass= Class;
TBClass=Class(xxx)
private
FA: TAClass;
end;

TAClass=Class(xxx)
private
FB: TBClass;
end;
 
这些我好像都明白,我在题目里面也说了,私有变量里面都要声明,而且我不想用第三个类,问有没有办法
 
constructor TBClass.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FA:=TAClass.Create(Self);
FA.FB:= Self;
end;
 
我有一个是线程,可以这样么?
 
多人接受答案了。
 
后退
顶部