我不确定我是否已经尽我所能解释了这一点,但是,我们开始......
我在一个表单上有 2 个自定义组件,它们在设计时通过 IDE 链接在一起。每当我从组件中调用一个过程时,我都会遇到访问冲突,
模块“Project2.exe”中地址 0049A614 的访问冲突。读取地址 00000034。
这是我的代码的一小部分
TMyClient = class(TClientSocket)
{...}
end;
和...
TPresence = class(TComponent)
private
ftheClient: TMyClient
public
procedure SetStatus(status: string);
published
property UserName : string read fUserName write fUserName;
property theClient: TMyClient read ftheClient write ftheClient;
end;
procedure TPresence.SetStatus(status: string);
begin
try
***** if theClient = nil then
Exception.Create('theClient is Nil');
except
on e:Exception do
MessageDlg(e.classname+', '+e.message, mtWarning, [mbOK], 0);
end;
{...}
end;
0049A614 在 *****,IDE 在这里停止。
我也尝试过在运行时进行分配
Presence1.theClient := MyClient1;
没有运气
使用 Presence1 或 MyClient1 中不相互依赖的程序可以正常工作。
德尔福 7
跟进:从 mghie 评论中,我重新考虑了它。
我从表单中删除了 TPresence 组件(这导致了一些奇怪的 IDE 错误,这可能与它有关)并在设计时创建了它,分配了所需的一切。现在它可以工作了,但是将 TPresence 组件放回 from 会带来错误。
谢谢你们的帮助,我现在应该可以解决这个问题了,如果我不能重新打开另一个问题:)