问题标签 [delphi-7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3495 浏览

delphi - Delphi:TImage.Create 导致访问冲突

我提前为一个新手问题道歉,但为什么我会在下面的代码中出现“访问冲突”错误(在“Create(SelectorForm);”行)?我尝试使用主窗体作为所有者,但没有任何区别。

0 投票
2 回答
3436 浏览

delphi - Delphi:在 FormCreate 上创建和显示 TImage

作为一个新手,我刚刚回答了我的第一个问题(Delphi:TImage.Create 导致访问冲突)立即遇到一个新问题:

当我显示此表单时

图像不可见。我究竟做错了什么?

我要感谢大家的建议。希望提出基本问题可以帮助其他人避免将来问他们:-)

0 投票
6 回答
1446 浏览

delphi - 为什么要在对象方法中检查 Assigned(self)?

我正在查看一些代码(Delphi 7),以下检查位于特定对象的每个方法调用的顶部:

我想这会阻止我尝试在空对象指针上调用方法。但是在这种情况下,一旦我尝试访问成员数据,我就会得到一个例外,对吧?

这是我以前从未见过的某种标准吗?有问题的对象来自 TPersistent。

0 投票
1 回答
2918 浏览

delphi - DateUtils 中的 IncHour 过程

我有以下 Delphi 7 代码将 TDateTime 值增加一小时。由于某种原因,它不起作用。

代码运行后StatusMemo的内容:

它的行为就像 IncHour 不起作用。我尝试使用 IncMinute(dtval,60),得到了相同的结果。我错过了什么?

0 投票
4 回答
3040 浏览

delphi - FastMM4 说“块头已损坏”

我有这个讨厌的错误,过去消失了,但现在过了一段时间又回来了。

我创建了两个 TSam 对象(从 TPersistent 派生)并将其加载到一个 TAsmJob 对象(从 TObjectList 派生)。

在运行时,一个表单会创建一个 TStringGrid,然后是创建这两个 SAM 对象的 AsmJob(并在每个对象中从磁盘加载一些数据)。AsmJob 也分配给网格。当表单被销毁时,Grid 通过释放 AsmJob 来处理它,从而释放 TSam 对象。这是问题所在:第一个对象被释放而没有问题,但第二个对象在调用其继承方法(在 Destroy 析构函数中)时死亡。

我在整个程序中使用 FreeAndNil 来释放对象。TSam 对象不是 NIL !!!!!!因此,这是释放对象的第一次尝试。甚至对象内部的数据也是一致的。

该程序的主干如下所示:

我真的不明白我在哪里尝试双重释放或在对象被释放后覆盖它。


编辑:

我得到的一些错误:

  • FastMM 在空闲块扫描操作期间检测到错误。FastMM 检测到一个块在被释放后被修改。

  • FastMM 在空闲块扫描操作期间检测到错误。块头已损坏。

细节:

我在 IDE 中启用了所有“调试”选项,包括“范围检查”。此外,FastMM4 设置为超级积极的调试模式。如果没有 FastMM 或在调试器之外,程序运行得很好——但我知道这并不意味着错误不再存在。实际上,它(可能)工作了一年多,直到我安装了 FastMM。


编辑:

谢谢大家。不,我觉得我正在朝着好的方向前进。

程序的结构更复杂,我只提供了主干来保持原始帖子的小。但见鬼,它已经变大了 :) 所以,这些 TSam 对象用于从磁盘加载数据。每个对象中有一个文件。他们也在做一些处理和数据验证。对于这些 TSam 中的每一个,我还有一个图形对象,它在屏幕上(以图形方式)显示 TSam 对象中包含的数据。TStringGrid 中的每一行也以文本形式显示 TSam 中的数据。

我有一个问题:如果我将程序分成小块以找出错误所在,错误还会出现吗?或者它可能只出现在这个特定的配置中?


回答“如何将 AsmJob 分配给 TStringGrid,以便 TStringGrid 破坏 AsmJob,你能告诉我们吗?”

然后在 TForm.Create (保存网格的表单)的某个地方,我做

在 MyGrid 的析构函数中,我这样做:

0 投票
1 回答
388 浏览

windows - ImageList_Add 在使用 pcAnywhere 控制的 PC 上返回 -1

我们的一个应用程序在通过 pcAnywhere 控制的计算机上失败,因为 ImageList_Add() WinAPI 函数在一段时间后无法添加图像/蒙版。该函数返回 -1 并且图像列表中的图标数量不会改变。在所有其他计算机上,这都没有问题。有趣的是,我们可以将 99 个位图 (LoadBitmap) 添加到图像列表,但添加第 100 个位图 ImageList_Add 会停止工作。

我试图编写一个简单的测试应用程序,用指定数量的位图填充图像列表,但这并没有导致问题。所以我站在雨中。有没有人见过这种奇怪的行为或有解决方案或解释?

0 投票
4 回答
279 浏览

delphi - 是 Delphi IDE 的差异或补丁添加器,即如果有人制作补丁并且我想将它自动添加到我的项目中?

Delphi 有可用的 DIFF 插件吗?我需要简单地将差异或补丁文件添加到我的项目中,替换在补丁中更改的项目代码,但还要保留旧的代码,以防万一没有补丁就退回到旧文件。

0 投票
9 回答
3651 浏览

delphi - Delphi 7编译随着时间的推移变得越来越慢?

我的项目大约有 400 个单元,重新启动后编译需要 20-40 秒,然后再重新编译需要 1-5 秒,到目前为止一切都很好。

工作 3-6 小时后,编译需要1-3 分钟进行后续重新编译,这迫使我每次都重新启动。

D7的某处有泄漏吗?是Windows XP的问题吗?它变得非常令人沮丧...

有人遇到过这个问题吗?

Edit1 DelphiSpeedup 似乎没有改善问题,它仍然出现......

0 投票
2 回答
346 浏览

delphi - 已经安装了Delphi 2007 之后还能安装Delphi 2006 吗?

在计算机崩溃后的重建过程中,我重新安装了 Delphi 7,然后是 Delphi 2007。我们跳过了 Delphi 2006 的安装。但是,现在我想在 Embarcadero 停止允许下载最新版本的 D2006 之前安装 Delphi 2006。

是否可以在这台计算机上安装 Delphi 2006 而不会对其他两个安装产生不利影响?

我唯一担心的是 SYSTEM PATH 变量中潜在的混淆问题,每个版本的 Delphi 都使用系统 PATH 值来记住 BPL 文件的位置。然后系统 PATH 语句包含由每个 Delphi 安装创建的多个 BPL 路径位置。然而,每个版本的 Delphi 只找到并使用在路径列表中找到的第一个 BPL 路径——它总是恰好是最近的安装。(Delphi 在当前系统 PATH 值的开头安装插入 - 而不是附加 - BPL 路径引用。)如果发生这种情况,则有可能,例如,Delphi 7 引用 Delphi 2007 的 BPL 文件。当然, 这一点都不好。这是我知道如何解决的问题 - 如果这是唯一的问题。

我希望答案不是“首先卸载 Delphi 2007”。这对我来说很痛苦,因为重新安装所有附加组件需要大量时间。

0 投票
3 回答
1859 浏览

xml - 创建和解析 XML 文档的最佳实践

我怀疑是否应该使用 TXMLTransformProvider 或 TXMLDocument。

TXMLTransformProvider 看起来更易于维护,在我看来,使用它所需的编码比 TXMLDocument 更少。

另一方面,TXMLDocument 看起来更灵活。

我需要的是生成和解析具有嵌套属性的 XML 文档,将其映射到主从 clientDataSets 并写回一个 XML 文档。

你有这方面的提示吗?

谢谢。