问题标签 [delphi-10.4-sydney]

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 投票
1 回答
53 浏览

delphi-10.4-sydney - delphi 中的 TEdit 需要回答哪些消息才能使 Windows 文本建议起作用

当您创建一个新的 VCL 表单并在其中放入一个 TEdit 和一个 TComboBox 时,Windows 文本建议仅适用于 TComboBox。我猜这是因为组合框的编辑部分是 Windows 编辑。我似乎无法在任何地方找到如何使 VCL 的编辑行为相同。我需要以某种方式或其他方式处理一些 IME 消息吗?

0 投票
0 回答
141 浏览

delphi - 如何为任何键盘检测 3 个按键与 Firemonkey 中的 Shift 相结合?

我想在表单的 KeyDown 事件中检测 Shift+3。KeyChar 仅在按下 3 键时包含“3”,但在按下 Shift 时修改为 Shift 字符(在我的英式键盘上,它是“£”符号,但对于美式键盘,它将是“#”,OSX 可能是“ "' 等等)。我怎样才能为 Windows 或 Mac 的任何键盘检测到这一点?不幸的是,Key 输入变量为空。我寻找了一个将字符转换为虚拟键代码的函数(例如 Windows VkScanEx),但没有'找不到任何适用于 Windows 和 OSX 的东西。我需要将 Shift 修改后的字符转换回 '3'。

这是文档中的相关引用。“如果按下的组合键可以被视为可打印的字符或数字,则 Key = 0 并且 KeyChar 包含按下的符号” http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Controls.TControl.KeyDown

这是我的问题的原因。我需要将按键解释为快捷方式而不是可打印字符。所以我需要以某种方式获取虚拟键值。这对于 Ctrl+3 来说不是问题,因为它会被解释为快捷方式,并且 Key 将具有正确的非零值。不幸的是,我需要检测 Shift+3。

请注意,在某些键盘(例如法语)上,如果不按下 Shift 键,我会遇到同样的问题,因为数字和符号与 Shift 键相反。无论是否按下 Shift 以及在任何键盘上,我都想检测被按下的 3 键。

0 投票
2 回答
233 浏览

encryption - ClientDatSet.LoadFromFile(DeCryptFile(XMLFile))?

我有一个带有客户端数据集的 Delphi 10.4 程序,加载用户使用 OpenFile 对话框选择的 XML 文件。它工作得很好,并且根据 XML 的内容,fielddef 结构会自动设置。

现在我希望能够读取解密文件并使用 ClientDataSet.SaveToFile 保存加密文件。

目前我正在使用 Lockbox 3.7 解密所选文件,创建一个临时文件,然后由 loadfromfile 读取。同样,Savetofile 将数据写回临时文件,然后对其进行加密并为其指定名称。它工作得很好,但将临时文件留在磁盘上。即使我在代码中删除了临时文件,如果你知道如何恢复它也相对容易。所以像这样加密的安全性毕竟不是那么高。

正如主题所建议的那样,我希望能够直接在 LoadFromFile 中(以及 SaveToFile 中的类似加密)作为 fileEn(或 De)Crypt 函数执行解密,而不使用临时文件,但无法找到任何有用的功能。

有人知道这样的功能吗?如果是这样,请指出我正确的方向。最近几天我一直在使用谷歌搜索有用的东西,但它让我比以前更加困惑和迷失。

由 LockBox EnCryptFile(和 DeCryptFile)创建的临时文件被完全破坏到无法恢复的程度的替代解决方案将作为临时解决方案,因此也欢迎提供完全破坏文件的方法的指针.

提前感谢我能得到的任何帮助。

0 投票
1 回答
98 浏览

arrays - `System.CopyArray` 与 `System.Copy`?

除了第一个只处理数组的明显区别之外,它们不做同样的事情吗?我一直在阅读这两个功能的帮助页面,不明白什么时候应该使用其中一个以及为什么。互联网搜索似乎表明,如果不使用循环编写,则仅将第二个用于数组复制目的。

0 投票
2 回答
128 浏览

components - 如何防止 DFM 中不需要的对象

我在我正在编写的组件中复制了带有 TBoundLabel 的源 LabeledEdit 示例,以附加一个方便的标签。它们工作正常,但我在加载 .dfm 表单时遇到问题(似乎当我的组件位于另一个组件上时,例如 CategoryPanel):

找不到类 TBoundLabel

在此处输入图像描述 测试表格:

LabelledCombo 的来源:

这是重现问题的最简单的测试,CategoryPanel 上的 LabelledCombo。(在表格上我不会感到悲伤。)

我尝试删除对子标签的引用并重新保存 .DFM 但它又回来了。我看不出要修复什么:源与 TLabeledEdit 的源相同,只是 TBoundLabel 不在我的单元中。我是否也需要将其源代码复制到我的组件单元中?

麦克风

0 投票
1 回答
143 浏览

delphi - 在 OnUpdateRecord 事件中从 TFDUpdateSQL 读取结果

我设置了一个与 TFDUpdateSQL 组件相关联的简单 TFDQuery 来处理更新。TFDUpdateSQL Insert sql 在表中插入一行,然后调用 scope_Indetity 以获取最新的 Identity 插入值。我想在 OnUpdateRecord 事件处理程序中读取这个值。我正在尝试使用 TFDUpdateSQl.Dataset.Fields[0].Asinteger 读取它,但这会返回 0 作为值 eerytime。有人可以帮助我了解如何在 OnUpdateRecord 中读取插入结果。

0 投票
2 回答
273 浏览

delphi - 程序加载期间添加的菜单项的 Vcl 样式问题

我有一个 Delphi 10.4.2 程序(32 位),其中在程序加载期间添加了菜单项(Application.OnActivate 事件,编码为只运行一次)。如果没有 vcl 样式,新项目将正确显示,但是当应用样式时(例如屏幕截图中非常漂亮的 Iceberg Classico),显示不正确。菜单选项在那里,可以点击;但未绘制文本和图标。

显示空白菜单选项的屏幕截图

有什么办法吗?我假设这是因为在应用样式后添加了这些特定的菜单选项。有没有办法刷新样式?或者我在创建菜单项时缺少设置属性?

谢谢。

编辑:是的,“文件”菜单和子菜单项显示正确。创建新菜单和项目(简化)的代码是:

0 投票
1 回答
113 浏览

delphi - 为什么在应用程序关闭时释放类析构函数中的成员组件会导致 EInvalidPointer 错误?

这是我创建的一个类,用于将 TLabel 添加到 TTrackBar。标签在拖动时显示轨迹栏的值,然后淡出。在运行时创建一个实例,并将父级设置为表单。它工作正常,但如果跟踪栏仍然存在,则在关闭应用程序时会出错。但是,如果在运行时释放轨迹栏然后关闭应用程序,则没有问题。当应用程序关闭时调试该行时(FLabel.Free;)我看到 FLabel 和其中的数据仍然存在,但它仍然给出了那个错误。我担心如果我只是删除该行,那么在运行时释放对象时会出现内存泄漏。我尝试将其更改为 if Assigned(FLabel) then FLabel.Free; 但没有变化。我知道这一定与标签的父级已设置有关。

0 投票
1 回答
797 浏览

ios - RAD Studio 10.4.1 尝试运行“无法创建进程:/Applications/PAServer-21.0.app/Contents/MacOS/dbkosx_27_0”时出现我的第一个 iOS 应用程序错误

我正在尝试使用 RAD Studio 10.4.1 (Delphi) 构建我的第一个多平台应用程序。非常简单的一键式应用程序。

我的开发环境:

  • RAD Studio 版本:10.4.1(带有最新的 Combined.Hotfix 来自 12/25)
  • Xcode 版本 13.7
  • Xcode 模拟器 13.7
  • macOS 版本:10.15.7
  • PAServer 版本 12.1.10.5

我正在使用具有 root 访问权限的 MacInCloud 帐户。当我尝试使用目标平台 iOS Simulator 13.7 调试应用程序时,PAServer 连接已成功建立,但是,我一直遇到以下错误:

返回以下错误:“无法创建进程:/Applications/PAServer-21.0.app/Contents/MacOS/dbkosx_27_0”

我使用 root 用户启动 PAServer 应用程序,因为我认为可能存在权限问题。我将 XCode 从 App Store 中的最新版本(使用 SDK 14.3)降级到 13.7,因为我了解到 RAD Studio 10.4.1 与 14.3 SDK 不兼容。

非常感谢任何建议。谢谢你。

0 投票
0 回答
62 浏览

formatting - 如何使用 Delphi(或 C#)初始化和格式化虚拟磁盘?

基于并使用 Jedi Demo VHD,我创建了一个虚拟磁盘,可以挂载和卸载它。安装后,它在磁盘管理器中显示为磁盘 1“未知”。继续在我的代码中对其进行初始化和格式化,我正在尝试使用以下代码:

当 edit1.text 包含我的虚拟磁盘的名称 (TestDisk.vhd) 并且 CreateFile 和 DeviceIoControl 生成“成功”时,GetDiskPath 获取“\.\PhysicalDisk1”,但磁盘管理器中的磁盘保持不变。

我究竟做错了什么 ?

注意!如果您有基于 C# 的答案,那也很好。