问题标签 [dcc32]

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

delphi - 配置 MSBuild 以调用 XE2 dcc32.exe

我的机器(Windows 7、64 位)上同时安装了 Delphi 2010 和 XE2。我使用 FinalBuilder 5.5 构建我的 Delphi 项目,它调用 DCC32.exe 进行完整构建。

现在我将我的项目从 Delphi 2010 升级到 XE2,我正面临这个问题:MSBuild 不断调用 Delphi 2010 dcc32.exe(即 C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\Bin\dcc32. exe) 而不是 XE2 的 dcc32.exe

我去了并更新了环境中的路径以及 bds 路径,但它没有帮助。

我怎样才能解决这个问题?

0 投票
2 回答
1227 浏览

delphi - 是否有 Delphi 5 编译器 (dcc32.exe) 或 IDE 开关/选项来更改可执行文件的语言?

我正在维护一个使用 Delphi 5 Professional German 构建的旧 Delphi 5 程序。

问题是创建的可执行文件的所有对话框和错误消息都以德语显示,即使在位置设置为美国或英国之类的英语 Windows 上也是如此。

我需要英文版的 Delphi 5 Pro 还是有配置选项/编译器开关/选项来更改“输出语言”?

我不是在谈论 IDE 语言,我已经知道可以通过删除 Delphi 安装目录中的所有 *.DE 文件将其改回英文。

例子:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

更新:根据评论,我在 Source 目录中查找德语消息 - 我立即找到了几个文件:

我希望有一个更简单的方法。不要以为我会走这条路……

0 投票
1 回答
1232 浏览

delphi - 错误:E2288 文件名太长

我正在尝试使用命令行运行程序在 TeamCity ( http://www.jetbrains.com/teamcity/ ) 中编译一个 Delphi 项目。对于每个项目,我都会收到“文件名太长”错误。项目在 Delphi IDE 中成功编译。我什至尝试从 buildagent 目录构建项目(在本例中为:)C:\TeamCity\buildAgent\work\cbe5a74bfd8678cb\iqwin_2013\Iqworkflow,它也在那里编译。这个特定的命令行构建过去也曾在不同的环境中工作过。

错误:

  • System.pas 可以在C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\source\rtl\sys
0 投票
2 回答
197 浏览

delphi - Delphi XE4可以禁用E2064吗?

我的 DUnitX 测试项目中有以下示例代码无法编译。此示例代码的范围与在非常大的 VCL 表单项目中编译时不会出错的代码相同。这两个项目都使用Delphi XE4,但是当我在我的DUnitX单元测试项目中引用在VCL项目中成功编译的源文件时,它失败了,同样的E2064左侧不能分配给这个代码产生:

是否需要指定编译器开关或其他一些奇怪的路径/设置才能让此代码在 XE4 中为我的 DUnitX 测试项目编译?

0 投票
1 回答
5863 浏览

delphi - DELPHI XE7 [dcc32 错误] E2250 没有可以使用这些参数调用的“Pos”的重载版本

DELPHI XE7 on win7 32bit 代码:

错误:

请帮助我如何修复该代码

提前致谢

0 投票
1 回答
16548 浏览

delphi - 错误 F2063 无法编译使用的单元(依赖包)

我写了 2 个包:MEComps_DXE5 和 AMLComps_DXE5。后者取决于前者。两者都应该是多平台的:Win32、Win64 和(将来)OSX。

当我打开第一个包 MEComps_DXE5 时,我能够编译、构建和安装它。我收到一些警告,因为该库包含的代码也必须在旧 D5 上编译,但构建成功并在预期的位置创建 dcu 和 dcp 文件。

当我打开第二个包 AMLComps_DXE5 时,我发现这种情况:

  • 如果我不声明对 MEComps_DXE5 的依赖,包将正确编译和构建(没有错误,会生成 dcu 和 dcp 文件),但 Delphi 会警告我它已从 MEComps_DXE5 隐式导入单元,并要求我添加包到依赖列表(需要)
  • 如果声明了依赖项,则编译将失败"[dcc32 Fatal Error] MEComps_DXE5.dpk(52): F2063 Could not compile used unit 'MEClasses.pas'"其中 MEClasses 是 MEComps_DXE5 包的第一个单元。

这几天我一直在尝试解决这个问题,但无济于事。我在两个方面工作:

  • 为什么 Delphi 甚至试图编译另一个包?我刚刚构建并安装了它,并且拥有所有 dcus 和 dcp。
  • 为什么编译失败?

至于第一个问题,我一点头绪都没有。

至于第二个问题,在这种情况下,文档是无用的。它解释了为什么不能编译使用的单元是致命的,并指出原因是通过查看以前的错误来确定的。但在这种情况下,没有以前的错误。

由于 MEComps_DXE5 实际上是自己编译和构建的,我怀疑这与语法或代码有什么关系。似乎编译器无法找到编译这些单元所需的东西。

这两个包分别位于各自的目录中。我将 MEComps\Win32 dcu 目录放在库路径和浏览路径上。IDE 查找使用的单位实际上没有问题。

我还检查了 dcc32 命令行,编译器似乎知道所有涉及的目录。

我可以添加的其他信息:

  • 两个包都有自己的包含文件(在它们的源目录中)。我不确定这些是否包含在包包含列表中,但我已经尝试了两种方法,似乎没有任何改变。
  • 这两个包都有一个对应的 Delphi 5 包,其中包括一些相同的单元和代码(虽然不同的 dpk)。这些编译和构建正确。Delphi 5 dcu 文件在源目录中生成。这会对 XE5 编译器造成问题吗?
  • 这是 MEComps_DXE5 包的完整代码。我看到 Delphi 在创建空包时插入了很多编译器指令。我没有碰那些:

0 投票
2 回答
840 浏览

delphi - 有没有办法强制 Delphi 命令行编译器输出英文文本?

Delphi 以多种语言本地化(我认为是英语、日语、德语、法语)。命令行编译器 (dcc32) 也已本地化,因此德语版本将“Fehler”而不是“Error”和“Warnung”而不是“Warning”写入控制台。

我编写了一个程序来解析这个输出并(作为它的一个特性)计算错误和警告。本地化字符串失败。

我可以调整程序以检测本地化文本,但感觉不对。我宁愿强制编译器使用英语作为输出。是否有命令行开关或任何其他选项可以做到这一点?

我想支持所有使用 msbuild 的 Delphi 版本,即 >=2007。

编辑:

至于读取错误代码而不是消息,请考虑以下错误:

错误代码是 E2029,但程序很难检测到它。检测文本“错误:”要简单得多且不易出错。

0 投票
4 回答
623 浏览

delphi - 如何告诉 Delphi 使用本地项目的 Security.pas 文件而不是 DXS 中的 Winapi.Security.pas?

Delphi 10 Seattle 引入了 Winapi.Security.pas。我正在尝试升级的项目(一个包)已经有一个 Security.pas 文件。没有从项目的范围名称列表中删除 Winapi(巨大的不良连锁反应),有没有办法告诉 IDE 和编译器使用项目的 Security.pas 文件而不是 Winapi.Security.pas?

我已经尝试将项目重命名为 Security.pas,但这会导致编译器产生更多问题,生成与它所抱怨的代码无关的错误,所以这是一个我现在不想继续下去的老鼠洞。这个项目在 XE7,FWIW 中构建得很好,所以这不是由于项目中的任何代码更改。

更新:

  • 重命名文件并使用单位别名不起作用。
  • 包的编译器行为与应用程序不同。
0 投票
1 回答
530 浏览

delphi - 有没有办法关闭 MSBuild 调用的 DCC32 中的安静模式?

默认情况下,使用打开安静模式的 -Q 开关调用 DCC32 编译器。有没有办法在 .dproj 文件中或通过命令行参数禁用此开关?

我在我的 Delphi 项目中使用 msbuild 进行构建自动化。不幸的是,当 MSBuild 执行 DCC32 参数时,我找不到任何对它的引用。通常我首先在 Delphi IDE 中更改编译器参数,然后检查项目文件中更改的内容。但是,这种方法不适用于安静模式,因为我在 IDE 中找不到此选项。

0 投票
2 回答
458 浏览

delphi - MSBuild 中的空行而不是任务控制台输出

我的产品正在从 Delphi 6 迁移到较新的 Delphi XE3。Delphi 6 编译器用于输出已编译为可执行文件的文件列表:

其中“X”表示一些数字

我们有一个内部软件,用于分析应用程序和特定文件(单元和包含文件)之间的依赖关系。该软件使用 dcc32 控制台输出(如上图)作为其输入。

在新的 Delphi XE3 中,我们不再直接调用 dcc32,而是使用 MSBuild。不幸的是,控制台输出与 Delphi 6 不同。当禁用“安静编译”选项时,控制台输出有多个空行代替已编译文件列表。

使用 /verbosity:diagnostic 参数,它看起来如下

直接调用 dcc32 时,也出现了类似的问题,但使用“-B”编译器开关(-B = 构建所有单元)解决了这个问题。我通过添加 /p:DCC_AdditionalSwitches=-B 尝试了与 MSBuild 类似的方法,但它仍然输出多个空行。