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

delphi - 创建聚合字段时不会自动添加 TClientDataSet 聚合规范

我需要在 TClientDataSet 中创建一个聚合字段,但如文档中所述:

选择确定。新定义的聚合字段会自动添加到客户端数据集,并且其 Aggregates 属性会自动更新以包含适当的聚合规范。

当我添加一个新的聚合字段时,聚合规范不会添加到 TClientDataSet 的聚合中,因此我不能使用它的 OnUpdateMethod。

我还尝试处理我的新聚合字段的 OnChange 事件,但它根本没有被触发。

难道我做错了什么?我只想拥有一个聚合字段并触发一个事件,它的值会发生变化。

这在delphi上坏了吗?因为文档中的内容并未反映实际行为。

编辑: @Michal Sznajder 我正在使用 Delphi 2007

0 投票
4 回答
1967 浏览

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

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

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

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

0 投票
5 回答
3160 浏览

c++ - 64位内存分配

我被要求在 C++ 中创建一个与 Delphi 兼容的 dll 来进行简单的 64 位内存管理。

背景是 Delphi 中的系统需要分配大量的内存块,这些内存块可以很好地超出 32 位可寻址空间。Delphi 开发人员向我解释说,他无法使用可用的 Delphi 命令分配内存。他说他可以持有一个64位的地址,所以他只想调用我提供的一个函数来分配内存并返回一个64位的指针给他。然后另一个函数稍后释放内存。

现在,我只有 VS 2008 可供我使用,所以首先我什至不确定我是否可以首先创建一个与 Delphi 兼容的 dll。

任何德尔福专家都愿意帮助我。也许有一种方法可以在不重新发明轮子的情况下实现他的要求。其他开发人员以前在 Delphi 中一定遇到过这种情况。

所有评论表示赞赏。

0 投票
10 回答
6281 浏览

delphi - 在 Delphi 中进行异步套接字编程的惯用方法是什么?

人们在 Delphi 中编写网络代码使用 Windows 风格的重叠异步套接字 I/O 的正常方式是什么?

这是我之前对这个问题的研究:

Indy组件似乎完全同步。另一方面,虽然 ScktComp 单元确实使用 WSAAsyncSelect,但它基本上只异步 BSD 风格的多路复用套接字应用程序。您在单个事件回调中被转储,就好像您刚刚从 select() 循环中返回一样,并且必须自己完成所有状态机导航。

.NET 的情况要好得多,使用 Socket.BeginRead / Socket.EndRead,其中的延续直接传递给 Socket.BeginRead,这就是您选择备份的地方。编码为闭包的延续显然具有您需要的所有上下文,甚至更多。

0 投票
8 回答
3218 浏览

visual-studio - Visual Studio 相当于 Delphi 书签

我使用Delphi已经很多年了,尽管我现在已经转到 Visual Studio,但我仍然记得编号书签(CTRL+ K+1设置书签 1,++CTRL转到书签 1)。Q1

是否有等效的Visual Studio ?在 Delphi 之后,我发现 VS 中的愚蠢书签是一件苦差事。我想添加书签然后返回到文件中的特定位置。

0 投票
10 回答
46911 浏览

delphi - 对数组进行排序的最佳方法

假设我有一组记录,我想根据记录中的一个字段对其进行排序。实现这一目标的最佳方法是什么?

0 投票
4 回答
8201 浏览

delphi - 在 Delphi 7 中,为什么我可以为 const 赋值?

我将一些 Delphi 代码从一个项目复制到另一个项目,发现它在新项目中无法编译,但在旧项目中可以。代码看起来像这样:

所以在新项目中,Delphi 抱怨“左侧不能分配给”——可以理解!但是这段代码在旧项目中编译。所以我的问题是,为什么?是否有允许重新分配 const 的编译器开关?这甚至是如何工作的?我认为 const 在编译时被它们的值替换了?

0 投票
3 回答
4563 浏览

delphi - 是否可以使用 ClickOnce 部署本机 Delphi 应用程序

是否可以在没有用于启动 Delphi 应用程序的存根 C# exe 的情况下使用 ClickOnce 部署本机 Delphi 应用程序?

同样的问题适用于 VB6、C++ 和其他本地 Windows 应用程序。

0 投票
1 回答
874 浏览

delphi - Delphi 2007 中的 HelpInsight 文档

我正在使用 D2007 并尝试使用 HelpInsight 功能(自 D2005 起提供)记录我的源代码。我主要对让 HelpInsight 工具提示正常工作感兴趣。从各种网上冲浪和实验中,我发现了以下内容:

  1. 使用三斜杠 (///) 注释样式比其他记录的注释样式更有效。即: {*! comment *}{! comment }
  2. 注释必须在它们所针对的声明之前。在大多数情况下,这意味着将它们放在代码的接口部分。(明显的例外是不能从当前单元外部访问并因此在实现块中声明的类型和函数。)
  3. 第一条评论不能针对函数。(即它必须是一个类型 - 或者至少看起来解析器必须在 HelpInsight 功能工作之前看到“type”关键字)

尽管遵循这些“规则”,但有时 Help-insight 只是找不到我写的评论。一个文件不会产生正确的 HelpInsight 工具提示,但如果我将此文件包含在不同的虚拟项目中,它就可以正常工作。

有没有人有其他让 HelpInsight 工作的指示/技巧?

0 投票
7 回答
4659 浏览

delphi - 如果没有显式调用,Delphi 调用是否继承于被覆盖的过程

如果代码中没有显式调用(继承;),Delphi 调用是否继承于被覆盖的过程,我有以下结构(从超类到子类)

TForm >> TBaseForm >> TAnyOtherForm

项目中的所有表单都将派生自 TBaseForm,因为这将具有用于每个表单(安全性、验证等)的所有标准设置和破坏性部分。

TBaseForm 有 onCreate 和 onDestroy 程序以及执行此操作的代码,但是如果有人(即我)忘记将继承添加到 TAnyOtherForm 上的 onCreate 中,Delphi 会为我调用它吗?我在网上找到了说它不是必需的参考资料,但没有地方说如果代码中省略它是否会被调用。

另外,如果它确实为我调用了继承,它什么时候会调用它?