从组件我的应用程序非常奇怪的错误(Very strange error in my app from

2019-10-28 15:13发布

好吧我的应用程序的一切,是它suppeded做每所以它的不作为,如果测试没有了是很麻烦一次做同样的事情。

它崩溃“somtimes”并非总是如此。 它这样做时,我在在打开文件对话框我最近输出的文件中的鼠标悬停。 不立即等待第二大约半秒,我知道那就是当打开文件对话框带来了如文件大小的数据以及创建和当什么类型的文件是..(标准)鼠标悬停时信息..东西这是使用“opendialog”等这个错误是我干的不是是我没有写这个代码?????? 如果是如何,,如果不是如何/我能做些什么来阻止它..

错误类型是BLA“在地址存取权限违反” ...

打开文件对话框没有过滤器和恰恰是因为它关闭compoent托盘和崩溃后,我称之为“opendialog.execute”

我initialy认为它仍可以写入,但然后继续后,我采空的应用程序打开任何新的文件,直到最后一人compleated保存过程。

正如我所说的它甚至犯规发生100%所有的时间,,并在3个不同的Win XP PC的它不是机器的具体..崩溃。

救命!!

额外; 发现我可以打开并运行该文件,一切都很好,只要我没有做一个提示框弹出在我创建了一个文件。

Answer 1:

您的窗体上放置一个TApplicationEvent S成分并添加事件处理程序OnHint事件的事件。 然后把一个破发点在那里,看看你能不能打破它崩溃之前(如你所说,这听起来像它时,它尝试显示提示崩溃)。 然后你就可以与调试DCU的编译和微量元素,看看它是崩溃的。

我的猜测是,你仍然有可能上的文件的独占锁定的文件句柄。 检查你的文件句柄,并确保你正确地关闭它们。 如果您尝试打开这些文件中的一个记事本程序运行时会发生什么?

间歇行为可能与上导致泄漏文件句柄错误条件不同的代码路径。

祝好运!



Answer 2:

开放式文件对话框基本上是一个资源管理器实例。 这意味着你必须安装在每个外壳扩展被载入了。 这一个问题是,一旦你使用了开放式文件对话框中,每一个外壳扩展也使用您的堆栈来存储变量/返回地址,...如果你的筹码不够大,这可能会导致崩溃。

尝试增加应用程序的堆栈大小。



Answer 3:

访问冲突很可能不是在所有涉及到打开的对话框。 我强烈建议你在你的代码看,并确保你不被过度写入内存边界 - 如果您使用的是动态数组检查并确保您不是在访问它的边界之外的元素; 同样的事情,如果你是手动分配内存。

如果你还没有使用FastMM,使用它。 它有一些美好的回忆完整性检查。



Answer 4:

我建议你附加一个调试的过程,并找出究竟是什么使程序崩溃。 这应该让你开始...



文章来源: Very strange error in my app from component