【发布时间】:2011-09-24 18:55:26
【问题描述】:
首先,对不起标题,但很难用几句话来解释。 那么问题就是这个。我有两个类(对象):Tclass1 和 Tclass2。这些与它们无关,并且两个类(对象)都调用第三个类(对象):例如 Tclass3。 因为我可以在 Tclass1 和 Tclass2 之间共享 Tclass3 的信息?
试着用一个例子更好地解释:
Tclass1 = class
private
class3: Tclass3;
public
property err: Tclass3 read class3 write class3;
...
end;
Tclass2 = class
private
class3: Tclass3;
public
property err: Tclass3 read class3 write class3;
...
end;
Tclass3 = class
private
icode: word;
public
property code: word read icode;
...
end;
主程序是:
var
class1: Tclass1;
class2: Tclass2;
begin
class1 := Tclass1.create;
try
class2 := Tclass2.create;
try
class2.err := class1.err; // <--- problem is here
...
... // processing...
...
class1.err := class2.err; // <--- problem is here
writeln (class1.err.code)
finally
class2.free;
end;
finally
class1.free;
end;
end;
当然,在 Tclass1 和 Tclass2 中,我调用了 Tclass3 的 create 方法并将其实例化。现在,当我运行它时,会出现异常,但我无法读取它,因为控制台已快速关闭。 我已将变量的相同规则应用于类(对象);事实上,如果我使用变量来放置它,一切正常。 不能用类(对象)解决吗? 再次非常感谢。
【问题讨论】:
-
这不是你的真实代码。它不会按原样编译,因为您在声明
TClass3的私有字段之前声明它。您应该发布真实的代码,仅对其进行更改以删除无关信息并在需要时将其匿名化。发布编造的代码可能会改变或隐藏实际问题,并且很难为您提供帮助。此外,说there's an error或throws an exception没有任何关于错误或异常的信息意味着什么。发布 exact 错误或异常消息,包括提供异常的任何地址。我们无法从这里看到您的屏幕。 -
另外,如果您添加一个
try..except块,您可以看到异常,在该异常块WriteLn中,异常消息然后执行ReadLn以阻止控制台窗口关闭。由 IDE 创建的裸控制台应用程序已为您预先编写了块。
标签: delphi delphi-xe2