问题标签 [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 投票
4 回答
656 浏览

delphi - 将客户端应用程序迁移到 FB 2.1

我将 Delphi 7 与 DBExpress 一起使用。我想将我的应用程序完全迁移到 firebird 2.1。我已经知道在服务器端该做什么,但在客户端并不确定。

在 TSQLConnection 组件中,我看到 vendorLib 属性指向 GDS32.dll。driverName 是 Interbase,getDriverFunc 是 getSQLDriverINTERBASE。

我不知道该怎么做才能使我的连接使用 fbclient.dll。我尝试在 vendorLib 中简单地将 gds32.dll 更改为 fbclient.dll,但它在我的应用程序中导致了一些访问冲突。

有小费吗?

0 投票
1 回答
562 浏览

delphi - Delphi 中的 Turbo Power systools stExport 事件

我正在使用 systools 软件包中的 turbopower 的 stExport。使用它来导出数据集。这很好用。该类使 FOnExportProgress 可用。此类没有可视组件,因此没有对象检查器可以简单地双击并让 delphi 为我创建事件。谁能提供一个如何手动创建事件的简单示例?

对于大多数可视化组件,delphi 为您提供了这个。例子:

如何手动创建它。

我在下面包含了一些与该事件相关的类。

如何手动分配 OnExportProgress。

请包括一个简单的例子!

谢谢你。

0 投票
5 回答
12076 浏览

delphi - Delphi - 共享违规打开文本文件

我正在尝试打开一个文本文件以在 Delphi 7 应用程序中读取,但由于另一个应用程序已经打开了该文件,因此出现 I/O 错误 32(共享冲突)。我尝试将 FileMode 设置为“fmOpenRead 或 fmShareDenyNone”,但现在意识到这无论如何都不适用于文本文件。

有没有办法读取由另一个应用程序打开的文本文件?

0 投票
8 回答
9522 浏览

delphi - 在 delphi 7 中,是 `try ... except raise; 结束;`有意义吗?

在我维护的一些 Delphi 7 代码中,我注意到以下很多实例:

在我看来,这些 try 块可以被删除,因为它们什么都不做。但是,我对可能的微妙副作用持谨慎态度。

谁能想到这些块实际上可以做任何没有它们就不会发生的事情?

0 投票
1 回答
15202 浏览

delphi - Delphi:在 OnBeforePost 事件中取消 TDataSet.Post

在我们的主数据输入屏幕上,我们在 OnBeforePost 事件中有一个确定/取消对话框。

  • 好的,让事情顺其自然
  • 立即取消Dataset.Cancel;

它完成了它的意图,回滚任何更改并将数据集置于浏览模式。

这对大多数客户来说都很好,但我们被问到是否可以将其更改为

  • Cancel,Abort the Post 并保持在编辑模式,并保留当前的更改。

如果他们想取消,可以使用取消按钮。

查看源代码procedure TDataSet.Post;似乎不可能以这种方式使用该事件。

有人对可以做到这一点的方式有任何想法吗?

跟进:这就是我现在选择的处理方式

0 投票
1 回答
980 浏览

delphi - 用 Delphi 实现 nsIProtocolHandler

我正在尝试在 Delphi 中构建一个 nsIProtocolHandler 实现。(我之前成功地完成了一个 IInternetProtocol,并希望在 FireFox 中拥有我在 Internet Explorer 中所拥有的东西。)感谢d-gecko项目,它以某种方式将 TInterfacedObject 魔法与 nsISupports 魔法联系起来,我能够制作一个在被询问时提供 nsIModule 的 DLL,在被询问时提供 nsIFactory,在被询问时提供我的 nsIProtocolHandler 之一,在被询问时提供我的 nsIChannel/nsIHttpChannel 之一。

当使用 firefox.exe 作为主机进程进行调试时,我可以看到我的库被加载,NewURI 被调用了 3 次,NewChannel 被调用,并且我传递了一个实现 nsIChannel 和nsIHttpChannel的对象。

这就是我困扰的地方。在我从 AsyncOpen 返回控制权之前,我不应该在我得到的 nsIStreamListener 上调用 OnStartRequest 和 OnDataAvailable,但我似乎没有在调用 AsyncOpen 的线程中重新获得控制权。

我尝试使用围绕默认http处理程序的自制包装器进行调试(使用CreateInstanceByContractID('@mozilla.org/network/protocol;1?name=http',...)。我也把监听器包裹过去了。奇怪的是,我看到 OnStartRequest 和 OnDataAvailable 在我的通道包装器死后在同一个线程中被调用。但谁在打电话?如果它是我试图包装的 http 通道,它如何生存(在同一个线程中)以及它如何控制调用侦听器?我很困惑。并且卡住了。

我曾尝试联系 d-gecko 项目的主要开发人员,但没有得到回应。

(另外,有人注意到我在 nsIProtocolHandler 上 MDC 讨论页底部的简介吗?)

(哦,还有一件事,是的,我知道“生活会更简单”,如果我只是从 C++ 中的 nsBaseChannel 继承。但重点是在现有的 Delphi 项目核心中添加一个 FireFox 协议处理程序。)

更新:我已经阅读了更多内容,这里也提到了:“流侦听器的方法在调用 asyncOpen [...] 的线程上被调用”,但是如果不先从“托管应用程序”调用,这怎么可能? ,我不清楚。这是XPCOM的把戏吗?我想在我得到它之前我必须阅读(很多)更多的 Firefox 源代码。

0 投票
3 回答
2144 浏览

delphi - Delphi 中是否有类似 PHP 的 vardump 的功能?

我已经放弃了 Delphi 7 调试器,并且非常依赖 outputdebugstrings。是否有一个标准函数我可以调用来将对象的内容作为字符串获取,就像我设置断点时调试器一样?

0 投票
3 回答
19600 浏览

delphi - 在 Delphi 7 中设置 EXE 图标

我正在尝试自定义在我的 Delphi 应用程序的 Windows 资源管理器和桌面快捷方式中显示的图标。

在 Delphi 7 IDE 中,我已经在 Project Options 对话框的 Application 选项卡中加载了所需的图标。它将我想要的图标显示为图形。

我认为没有必要,但我也将我的图标设置为 TMainForm Icon 属性。

但是,生成的 EXE 仍显示默认的 D7 图标。我错过了什么?

0 投票
4 回答
2289 浏览

delphi - 是否可以在 Delphi 7 中获取指针指向的类型的大小?

我想在以下函数中获取任何“记录”类型的大小。但似乎它不起作用:

例如,以下记录的大小为 8 个字节

GetDataSize(@a)总是返回 1(a 当然是 SampleRecord 类型的变量)。我该怎么办?

我注意到 Delphi 有一个过程过程 New(var P: Pointer)可以分配内存块对应于 P 指向的类型的大小。它如何获得大小?

0 投票
5 回答
1139 浏览

delphi - 如何列出所有实例化的对象?

如何使用 FASTMM4 或默认内存管理器列出所有应用程序中的所有实例化对象?