问题标签 [delphi]

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 投票
10 回答
67564 浏览

delphi - delphi 变量是否默认初始化为一个值?

我是 Delphi 的新手,我一直在运行一些测试来查看默认情况下初始化的对象变量和堆栈变量:

这是我习惯于其他语言的行为,但我想知道在 Delphi 中依赖它是否安全?例如,我想知道它是否可能取决于编译器设置,或者可能在不同的机器上以不同的方式工作。依赖对象的默认初始化值是否正常,或者您是否在构造函数中显式设置所有实例变量?

至于堆栈(过程级)变量,我的测试表明未初始化的布尔值是真的,未初始化的整数是 2129993264,未初始化的对象只是无效的指针(即不是 nil)。我猜规范是在访问它们之前总是设置过程级变量?

0 投票
4 回答
9238 浏览

delphi - 使用 Delphi 最小化外部应用程序

有没有办法在我的 Delphi 应用程序中最小化我无法控制的外部应用程序?

例如notepad.exe,除了我要最小化的应用程序将只有一个实例。

0 投票
15 回答
19080 浏览

delphi - Delphi中的密码加密

我需要将数据库密码存储在配置文件中。出于显而易见的原因,我想对它们进行加密(最好使用 AES)。有谁知道一个 Delphi 实现,它很容易引入到具有超过 10,000 行历史增长(URGH!)源代码的现有项目中?

澄清:简单意味着将单元添加到项目中,添加最大值。读取配置文件并使用它完成的 5 行代码。时间不应超过 15 分钟。

另一个说明:需要密码才能创建与数据库的连接,而不是支持应用程序的用户管理方案。所以使用哈希没有帮助。数据库引擎检查密码是否有效,而不是应用程序。

0 投票
2 回答
779 浏览

delphi - 将图形添加到 TLabel 的问题

我正在尝试使用 Delphi 创建一个从 TLabel 继承的组件,并在 TLabel.Paint 上添加了一些自定义图形。我希望图形位于文本的左侧,所以我覆盖了 GetClientRect:

该解决方案有我想解决的主要问题:无法单击控件的“图形区域”,只能单击标签区域。如果标题为空字符串,则根本无法通过单击在设计器中选择组件。有任何想法吗?

0 投票
1 回答
1185 浏览

delphi - Delphi:OpenFileDialog 与 URL 崩溃

给 TOpenFileDialog 一个 URL,Execute 方法抛出一个异常:

但是您可以从 URL 打开文件。

德尔福5

0 投票
3 回答
11326 浏览

delphi - Delphi 弹出菜单检查

我在 Delphi 中使用弹出菜单。我想以“无线电组”方式使用它,如果用户选择一个项目,它会被选中,而其他项目不会被选中。我尝试使用 AutoCheck 属性,但这允许检查多个项目。有没有办法设置弹出菜单,以便只能检查一个项目?

0 投票
5 回答
2407 浏览

windows - 启动已注册的 mime 助手应用程序

我曾经能够通过在 Windows 注册表中注册给定的 mime 类型来启动本地安装的帮助应用程序。这使我能够允许用户单击一次链接到我们内部浏览器应用程序的当前安装。这在 Internet Explorer 5(大部分时间)和 Firefox 中运行良好,但现在在 Internet Explorer 7 中不起作用。

传递给我的 shell/open/command 的文件名不是下载安装包的完整物理路径。IE给我的路径参数是

FileExists()不幸的是,在调用或尝试创建TFileStream对象时,这不会解析为物理文件。

物理路径缺少 Internet Explorer 隐藏缓存子目录的 Internet 临时文件,"Content.IE5\ALBKHO3Q"其绝对路径将表示为

是的,子目录是由 IE 随机生成的,只要 IE 将完整路径传递给我的帮助应用程序,这不应该是一个问题,不幸的是它没有这样做。

mime 助手应用程序的安装不是问题。它由全球所有 10,000 多名用户的全球登录脚本安装/更新。只有当用户点击带有我们桌面浏览器应用程序安装链接的内部网页时,才会调用 mime 助手。该安装以 mime 类型的"application/x-expeditors". ".expd"/ mime 类型的注册"application/x-expeditors"看起来像这样。

我曾考虑枚举用户的所有 IE 缓存条目,但我会担心检查所有这些条目可能需要多长时间,或者我最终可能会在我正在寻找的当前条目之前找到一个较旧的缓存条目。但是,括号中的文件名后缀"[n]"可能是唯一键。

我尝试过wininet方法GetUrlCacheEntryInfo,但这需要URL,而不是IE传递的虚拟路径。

我希望有一个给定虚拟路径的 Shell 函数将交回物理路径。

0 投票
8 回答
4245 浏览

sql-server - 为什么我的存储过程接收到一个空参数?

好的,这是一个卷发。我正在编写一些我没有编写的 Delphi 代码,我遇到了一个非常奇怪的问题。我的存储过程的参数之一是通过 as null,即使它肯定是被发送的1

Delphi 代码使用 TADOQuery 来执行存储过程(匿名):

Integer(SomeFunction())目前总是返回 1 - 我用调试器检查过。

但是,在我的存储过程中(出于调试目的而更改):

TempLog确实以“哦,废话”结尾(附带问题:必须有更好的方法来调试存储的过程:它是什么?)。

以下是分析器的示例跟踪:

这对我来说有点奇怪。请注意,它正在使用 @p3@P3 - 这会导致我的问题吗?

另一个奇怪的事情是,它似乎取决于我使用的 TADOConnection。

该项目是一个 dll,它从另一个应用程序传递了一个 TADOConnection。它使用此连接调用所有存储过程。

如果不使用此连接,我首先这样做:

那么问题就不会出现了!这种情况的痕迹是这样的:

不幸的是,这对 lil ol' 我来说有点过分了。什么样的 TADOConnection 选项可能会影响这一点?

有没有人有任何想法?

编辑: 下面更新(不想再提出这个问题了:P)

0 投票
2 回答
8029 浏览

delphi - Delphi 弹出菜单可见性

Delphi 7 中是否有办法确定弹出菜单是否可见(显示在屏幕上),因为它缺少 Visible 属性。

0 投票
2 回答
1819 浏览

delphi - Delphi 2009 和 Informix dbExpress 与 Windows 2003

我有一个简单的应用程序,它使用 dbExpress 连接 Informix 数据库。如果我用 TurboDelphi 编译它,它可以在 WinXP 和 Win2003 上运行。

当我使用新的 Deplhi 2009 时,我的应用程序在 WinXP 上运行正常,但在 Win2003 上无法启动。没有错误消息框,只有事件日志中的信息:

错误应用程序 inf_dbexpress_test.exe,版本 0.0.0.0,错误模块 kernel32.dll,版本 5.2.3790.4062,错误地址 0x0000bee7。

我认为这是 dbExpress 驱动程序的问题,而我使用 ODBC 连接 Informix 的德里 2009 编译的其他应用程序在 Win2003 上工作。

任何人都可以测试来自 Delphi 2009 的 Informix dbExpress 驱动程序是否适用于 Windows 2003?


感谢您的帮助,但它不起作用。

至于$INFORMIXDIR:我重新安装了 ClientSDK 3.5,我$INFORMIXDIR现在是:

c:\informix

(是 c:\Program Files ...)。

我可以从使用 ODBC 的应用程序连接到数据库。但是 dbExpress 应用程序无法启动,即使在 WinXP 兼容模式下也是如此。


我已在 Delphi Quality Central 中将其报告为错误 #67823: