问题标签 [delphi-2009]

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 回答
1276 浏览

database - D2009 无法编译的 VCL 单元

我在 Delphi 2009 的 TFields 实现中发现了一个错误,并编写了一个快速补丁。我将 DB.pas 复制到我的项目文件夹并将其添加到项目的文件列表中,但现在我无法编译它。当我转到代码中指定的位置时,前两个错误消息甚至没有任何意义。

当然,如果可以指望任何东西都能正确编译,那就是 CodeGear 的代码。他们已经设法编译它,生成 VCL 组件。那么我错过了什么?这是编译器的输出:

0 投票
4 回答
3476 浏览

delphi - 我可以在事件处理程序上使用闭包吗(即 TButton OnClick)

如果我尝试在事件处理程序上使用闭包,编译器会抱怨:

不兼容的类型:“方法指针和常规过程”

我理解..但是有没有办法在方法指针上使用 clouser?以及如何定义是否可以?

例如:

谢谢!

0 投票
2 回答
417 浏览

delphi - 如何覆盖嵌套类型的方法?

我在 Delphi 2009 中有一个自定义的 TObjectList 后代,我想稍微玩一下它的枚举器并向 MoveNext 方法添加一些过滤功能,以使其跳过某些对象。MoveNext 由 DoMoveNext 调用,它是一个虚拟方法,所以这应该不难重写……除了一件事。TObjectList 的 TEnumerator 不是它自己的类;它在 TObjectList 声明中声明为嵌套类型。

有什么简单的方法可以在我的后代类中覆盖 TEnumerator.DoMoveNext,还是我必须重新实现整个 TEnumerator?这不是一个很大的课程,但如果可以的话,我宁愿将冗余保持在最低限度......

0 投票
4 回答
9507 浏览

algorithm - 当 BOM(字节顺序标记)丢失时,如何最好地猜测编码?

我的程序必须读取使用各种编码的文件。它们可能是 ANSI、UTF-8 或 UTF-16(大端或小端)。

当 BOM(字节顺序标记)在那里时,我没有问题。我知道文件是 UTF-8 还是 UTF-16 BE 或 LE。

我想假设当没有 BOM 文件是 ANSI 时。但我发现我正在处理的文件经常缺少它们的 BOM。因此,没有 BOM 可能意味着文件是 ANSI、UTF-8、UTF-16 BE 或 LE。

当文件没有 BOM 时,扫描某些文件并最准确地猜测编码类型的最佳方法是什么?如果文件是 ANSI,我希望接近 100% 的时间,如果文件是 UTF 格式,我希望接近 100%。

我正在寻找一种通用的算法方法来确定这一点。但我实际上使用的是 Delphi 2009,它知道 Unicode 并且有一个 TEncoding 类,所以特定的东西将是一个奖励。


回答:

ShreevatsaR 的回答让我在 Google 上搜索“通用编码检测器 delphi”,这让我感到惊讶的是,这篇文章在仅存活了大约 45 分钟后就被列为第一名!那是快速的googlebotting!Stackoverflow 如此迅速地获得第一名也令人惊讶。

Google 中的第二篇文章是 Fred Eaker 撰写的关于字符编码检测的博客文章,其中列出了各种语言的算法。

我在那个页面上发现了 Delphi,它直接把我带到了 SourceForge 的 Free OpenSource ChsDet Charset Detector,它是用 Delphi 编写的,基于 Mozilla 的 i18n 组件。

极好的!感谢所有回答的人(全部 +1),感谢 ShreevatsaR,再次感谢 Stackoverflow,帮助我在不到一个小时的时间内找到答案!

0 投票
1 回答
2136 浏览

delphi - 如何让 Delphi 2009 默认在第二个监视器中打开我的应用程序?

调试时,我总是希望 Delphi 在第二个监视器中打开我的应用程序,但它总是在第一个监视器中打开,我知道我可以在关闭之前保存应用程序放置,但我希望它在调试模式下始终在第二个监视器中打开。

有没有办法配置delphi 2009来做到这一点?

0 投票
4 回答
6780 浏览

delphi - WideString 是否与 Delphi 2009 中的 String 相同

我在 2009 年重新编译一些在不同点使用宽字符串的应用程序时遇到了一些奇怪的行为。

在 Delphi 2009 应用程序中 Widestring 与 String 相同吗?

0 投票
3 回答
893 浏览

delphi - acrobat 如何对作为便笺添加到 pdf 的注释进行编码?

多年来,我们一直在通过我们的应用程序中的 activex 控件读取和写入 pdf 的便笺/注释/注释。我们最近升级到了支持 Unicode 的 Delphi2009。以下是引起问题的原因。

当我们打电话

CAcroPDAnnot.GetContents

结果似乎很奇怪,我们丢失了 Unicode 字符。这不像保存为 ansi 字符串,这通常会导致返回 ????? 相反,我们得到一个字符串,例如

‚És‚“ú‚É•—Ž×‚ð‚‚‚‚‚½‚ç</p>

对于一串日文字符。

但是,如果我通过 pdf 本身的菜单将 pdf 中的注释保存到数据文件中,它将被写入文件,如下所示

0k^L0Oeå0k~¨ª0'0r0D0_0‰</p>

后者可以导出并重新导入到 acrobat pdf 中,并将重新创建正确的 unicode 字符。但是,一旦我在我的代码中调用 CAcroPDAnnot.GetContents,它就会以其他方式返回。

  1. CAcroPDAnnot.GetContents 坏了吗?
  2. 是否有我应该注意的编码方案?
  3. 有没有我可以做的替代方案?

谢谢

0 投票
7 回答
4490 浏览

delphi - 是否可以在 RAD Studio 2009 中关闭 Unicode 支持?

我在使用 RAD Studio 2009 时遇到了一点问题。
如您所知,可以在 MSVS 中关闭 Unicode 支持(右键单击解决方案->属性->字符集=未设置)。我需要在 RAD Studio 中找到这个功能,我知道它存在但不知道具体在哪里。
这是唯一阻止我在 Socket Chat 大学项目上工作的事情。
PS 这个问题是在我从 CodeGear 官方网站安装更新后出现的。

0 投票
2 回答
4439 浏览

delphi - 泛型:什么是“构造约束”?

我制作了一个自定义 TObjectList 后代,旨在保存基对象类的子类。它看起来像这样:

我希望每个新列表都以其中的一个空白对象开始。这很简单,对吧?但是编译器不喜欢它。它说:

“无法在类型参数声明中创建没有 CONSTRUCTOR 约束的新实例”我只能假设这是与泛型相关的东西。任何人都知道发生了什么以及如何使这个构造函数工作?

0 投票
2 回答
1770 浏览

delphi - 如何使通用对象列表从特定的基类工作?

我在一篇博文中读到(我不记得现在在哪里),这是为泛型对象声明具有特定基类型的基于泛型的类的方法。编译器会接受它就好了。但是当我尝试使用它时,它决定不合作。

这给了我一个编译器错误。

[DCC 错误] my_database.pas(1145):E2010 不兼容的类型:“TDescendantDatafile”和“TBaseDatafile”

问题是, 1145 甚至不是有效的行。有问题的文件在#1142 结束,它所抱怨的类型声明在#20 行。这让我想知道这是否是编译器故障。还是我的语法不太正确?有谁知道使这项工作的方法?

编辑:吉姆指出,当他尝试它时,它编译得很好。更多信息:我在同一单元中声明了基本数据文件类型和通用列表,而 TDescendantDatafile 在第二个单元中,而 TDescendantList 在第三个单元中定义。我已经在 D2009 的编译器中发现并报告了一个错误,其中涉及泛型在多个单元中搞砸了类型。这可能是相关的。谁能证实这一点?