【发布时间】:2013-08-10 18:07:44
【问题描述】:
我有 Delphi XE3,Windows 7 Pro 64bit。 我的应用程序在我的 PC 上运行良好,但我的用户告诉我应用程序在他们的 Win XP 上启动时崩溃,并且在他们的 Win 7 上也 (!!)。
我尝试在我的 Win 7 上运行该应用程序,但以普通用户(没有管理员)身份登录 - 它可以工作。 所以现在我已经用 Windows XP 安装了虚拟机,并且真的 - 应用程序在启动时崩溃了。
我需要找出问题所在,但我无能为力。
就我不能使用调试器而言(我没有在那个 VM 上安装 Delphi),
我试图在我的应用程序的各个地方放置一些MessageBox(0, 'Hello', 'Test', MB_OK); 以捕捉它发生的地方,这就是我发现的:
我的项目源中有这个:
MessageBox(0, 'Hello', 'Test', MB_OK); // shows OK
Application.CreateForm(TfMain, fMain);
MessageBox(0, 'Hello', 'Test', MB_OK); // doesn't show - crash before this line
这是在我的主窗体fMain 的OnCreate 函数中:
procedure TfMain.FormCreate(Sender: TObject);
begin
MessageBox(0, 'Hello', 'Test', MB_OK); // doesn't show - crash before this line
...
那么这个应用会在哪里崩溃呢?
甚至OnCreate 中的第一行都没有执行....
我不知道...有人吗?
不知道这是否重要:我在 fMain uses 子句的 interface 和 implementation 下有一些单位。我应该看那里吗?但是在我的主窗体的OnCreate 之前会发生什么?
【问题讨论】:
-
您无法调试,因为您的 VM 上没有安装 Delphi。您知道有几种非常简单的方法可以解决这个问题,对吧?
-
@Rob Kennedy 嗯,如果我知道,我会这样做。有什么建议吗?
-
我不是 Rob,但在我的头脑中:1) 在该 VM 上安装 Delphi。 2)使用远程调试器(详见Delphidocumentation)。至于“
OnCreate之前会发生什么?”,请使用源代码。您可以在Forms.pas中找到它。 -
“应用程序崩溃”不是可接受的错误描述。如果您能得到实际的错误消息,那可能会导致解决方案。
-
您在使用中的单位初始化应该无关紧要。它们应该在 formcreate 之前已经执行。但是......在 createform 调用和 formcreate (oncreate) 之间,您的表单上的所有组件都被创建了。可能在其中一个创作中是你的崩溃。你能瘦身/剥离你的表格直到它不崩溃吗?从剥离特殊的非标准组件开始。 (我看到@house of dexter 已经提出了这个建议。)
标签: delphi windows-7 windows-xp delphi-xe3