问题标签 [delphi-5]

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 投票
4 回答
1967 浏览

delphi - 如何实现类型安全的 COM 枚举?

我如何在 COM 场景中在 Delphi 中实现类型安全枚举?基本上,我想用封装在类中的一组静态最终对象引用替换枚举的一组原始常量?. 在 Java 中,我们可以这样做:

并使用自定义的枚举类型进行比较:

我目前正在使用旧的 Delphi 5,我想在接口上声明一些枚举参数,不允许客户端对象传递整数(或长整数)类型来代替所需的枚举类型。除了使用本机 delphi 枚举之外,您还有更好的方法来实现枚举吗?

0 投票
3 回答
7304 浏览

delphi - “应用程序”全局变量无法识别

我在 Delphi 5 中从事一个大型项目。今天,在将应用程序的两个分支合并在一起后,数百个单元之一, UnitMain(你猜是主窗体的单元)停止识别应用程序全局。

这是一个相当奇怪的问题——我可以通过在 UnitMain 中定义 Application: TApplication 并从我们的 .dpr 项目文件中将其设置为 Application 来编译程序,但这会导致访问冲突,这并不是什么大问题令人惊讶的是 Application 是它的特别之处。

我希望有人以前遇到过同样的问题,或者对 Delphi VCL 的内部工作有足够的了解来帮助我。

确切的错误是编译器无法识别本单元中的应用程序。例如,对于 Application.ProcessMessages;调用,错误是“需要对象或类类型”。其他单位都没有这个问题。

0 投票
4 回答
4244 浏览

string - 我可以访问从 Delphi CreateProcess 命令返回的字符串吗?

我正在使用 Win32CreateProcess函数来执行对外部可执行文件的调用。可执行文件返回一个字符串。

有没有办法在调用可执行文件后捕获和询问返回的字符串?如果做不到这一点,我可能不得不将字符串写入可执行文件中的文件,并在调用完成后在调用程序中读取它。不过,这似乎很蹩脚。

0 投票
7 回答
8849 浏览

delphi - Delphi - 找不到类 TListView

我们有一个 Delphi 5 应用程序,它是在没有运行时包、dll 或外部资源(即单个可执行文件)的情况下构建的。当我们在客户端 PC 上安装它时,我们会收到以下错误消息:

找不到类 TListView

或者

找不到类 TImage

我们之前已经将它安装在数十台 PC 上而没有发生任何事故,但这次最新的安装是有问题的。

目标 PC 是全新安装的 Windows XP(Service Pack 3),未安装其他软件。

它不会抱怨所有的课程,而只是抱怨一两个。例如TPanel/ TForm/ TEdit 都可以。

谁能想到是什么原因造成的?

编辑

新 PC 上的 exe 在我所知道的大约 30 台其他 PC 上,包括 windows XP Sp1、2、3、Windows Vista 和 Windows Embedded。新旧 PC 都安装了旧版本,然后更新为最新版本。唯一的区别是最新安装的版本跳跃更高。

0 投票
2 回答
398 浏览

delphi - 将 TServerSocket 应用程序从 D5 转移到 D2007 的任何陷阱?

我在谷歌上做了一个简短的搜索,什么也没找到,但我觉得我应该问一下。我并不真的期望会有什么,但宁愿现在问一个没有答案的问题,也不愿在一切都出错时问这个问题,发现每个人都知道一个“陷阱”......!

为了使整体支持/开发生活更轻松(并引入 madExcept 等),我将采用 D5 编写的半 GUI 应用程序(使用 NativeDB 连接到 ASA6)并将其移植到 D2007,最终将其转进入控制台应用程序和/或服务。(目前的 GUI 只不过是一个美化的开始/停止按钮和一个活动日志)。

它是一个经典的 TServerSocket 应用程序,监听指定的端口并在客户端连接时执行各种操作。我预计 NativeDB 方面不会出现任何大问题,但我想知道就 TServerSocket 而言,D5 和 D2007 之间是否有任何变化(错误修复、改进)?

我们不使用阻塞套接字、Indy 等——它只是来自 scktcomp 单元的 TServerSocket,直接来自 D5 Enterprise 框。除非 D2007 下的 TServerSocket 有问题,否则我不打算显着更改代码。:-)

0 投票
4 回答
3149 浏览

delphi - 将 Windows 事件日志改造为 Delphi 5 应用程序

我正在寻找一种(相当轻松)向小型旧版 Delphi 5 应用程序添加一些 Windows 应用程序事件日志支持的方法。我们只希望它在启动、关闭、无法连接到数据库等时记录下来。

我见过的几个解决方案/组件似乎表明我们需要创建一个资源 DLL,Windows 事件日志查看器在尝试读取我们的“条目”时将链接到该 DLL。虽然这看起来并不太繁琐,但我想如果/当我们将来进一步开发应用程序时,还需要记住其他一些事情——我们需要让这个 DLL 保持最新。

在未来的某个时候,我们希望将应用程序变成服务,可能是用 D2007 编写的。

那么任何人都可以推荐一条合适的路线来将事件添加到 D5 中的事件日志中吗?我正在寻找具体的“我们使用了这个并且没问题”的评论,而不是谷歌拖网(我可以自己做!)免费或付费,真的不介意 - 但我可以迁移到 D2007未来很重要。

0 投票
1 回答
1950 浏览

delphi - 关闭模式对话框时未发送Delphi CMExit消息?

在我正在处理的应用程序的一部分中,有一个表单控件在接收到 CMExit 消息时进行验证,这正是 Delphi 文档所说的这样做(此代码示例来自 Delphi 帮助文件):

这样做的目的是在控件失去焦点时立即执行验证。因此,例如,如果我单击“确定”按钮,表单控件将失去焦点,该方法将运行,并且在异常时会将焦点设置回该表单控件。(因此,确定按钮上的“单击”事件永远不会通过,对话框也永远不会关闭)。

我遇到的问题是此表单控件位于模式对话框窗口内。单击确定确实会发送 CMExit 消息并导致记录更新(并进行验证)。但是,在表单控件中按 Enter 会导致模式对话框关闭而不发送 CMExit 消息。就好像表单控件永远不会“失去焦点”。这意味着不仅对话框在没有表单实际验证数据的情况下关闭,而且数据集也没有更新。

鉴于这个问题,我放置数据集更新/验证代码的最佳位置在哪里?我可以将它移到对话框表单本身并在 OnCloseQuery 处理程序中实现它,但这意味着逻辑在表单控件表单本身中都是重复的。(表单控件用在其他地方,我想避免改变它的行为)。

(我推测 CMExit 没有被触发,因为控件实际上从未失去焦点。表单已关闭,但表单控件仍然在关闭的表单上“具有焦点”。)

0 投票
3 回答
4517 浏览

delphi - 如何在 Delphi 5 中从 TDBGrid 中获取选定的单元格

我在表单上有一个 DBGrid 并且我进行了多项选择,我现在需要将选定的单元格(它们是电子邮件地址)发送到 Outlook 的“TO Box”我该怎么做,我将不胜感激(Delphi5)提前致谢

0 投票
6 回答
8514 浏览

delphi - 如何使用 Delphi 5 创建 Telnet 客户端

如何在 Delphi 5 应用程序中创建 Telnet 客户端?

0 投票
2 回答
5623 浏览

delphi - 如何打印 TPanel 内容?

我有 TPanel。在这个面板上有一个 TImage 后代,很少有其他面板带有控件等。实际上,图片包含一些图表,而在运行时创建了带有标签的其他面板,以向用户提供额外的信息。
最近有人告诉我,如果可以打印此面板,并以它的形式出现在纸上,那就太好了。任何线索,如何做到这一点?