问题标签 [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.
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 路径,但它没有帮助。
我怎样才能解决这个问题?
delphi - 是否有 Delphi 5 编译器 (dcc32.exe) 或 IDE 开关/选项来更改可执行文件的语言?
我正在维护一个使用 Delphi 5 Professional German 构建的旧 Delphi 5 程序。
问题是创建的可执行文件的所有对话框和错误消息都以德语显示,即使在位置设置为美国或英国之类的英语 Windows 上也是如此。
我需要英文版的 Delphi 5 Pro 还是有配置选项/编译器开关/选项来更改“输出语言”?
我不是在谈论 IDE 语言,我已经知道可以通过删除 Delphi 安装目录中的所有 *.DE 文件将其改回英文。
例子:
更新:根据评论,我在 Source 目录中查找德语消息 - 我立即找到了几个文件:
我希望有一个更简单的方法。不要以为我会走这条路……
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
delphi - Delphi XE4可以禁用E2064吗?
我的 DUnitX 测试项目中有以下示例代码无法编译。此示例代码的范围与在非常大的 VCL 表单项目中编译时不会出错的代码相同。这两个项目都使用Delphi XE4,但是当我在我的DUnitX单元测试项目中引用在VCL项目中成功编译的源文件时,它失败了,同样的E2064左侧不能分配给这个代码产生:
是否需要指定编译器开关或其他一些奇怪的路径/设置才能让此代码在 XE4 中为我的 DUnitX 测试项目编译?
delphi - DELPHI XE7 [dcc32 错误] E2250 没有可以使用这些参数调用的“Pos”的重载版本
DELPHI XE7 on win7 32bit 代码:
错误:
请帮助我如何修复该代码
提前致谢
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 在创建空包时插入了很多编译器指令。我没有碰那些:
delphi - 有没有办法强制 Delphi 命令行编译器输出英文文本?
Delphi 以多种语言本地化(我认为是英语、日语、德语、法语)。命令行编译器 (dcc32) 也已本地化,因此德语版本将“Fehler”而不是“Error”和“Warnung”而不是“Warning”写入控制台。
我编写了一个程序来解析这个输出并(作为它的一个特性)计算错误和警告。本地化字符串失败。
我可以调整程序以检测本地化文本,但感觉不对。我宁愿强制编译器使用英语作为输出。是否有命令行开关或任何其他选项可以做到这一点?
我想支持所有使用 msbuild 的 Delphi 版本,即 >=2007。
编辑:
至于读取错误代码而不是消息,请考虑以下错误:
错误代码是 E2029,但程序很难检测到它。检测文本“错误:”要简单得多且不易出错。
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 中构建得很好,所以这不是由于项目中的任何代码更改。
更新:
- 重命名文件并使用单位别名不起作用。
- 包的编译器行为与应用程序不同。
delphi - 有没有办法关闭 MSBuild 调用的 DCC32 中的安静模式?
默认情况下,使用打开安静模式的 -Q 开关调用 DCC32 编译器。有没有办法在 .dproj 文件中或通过命令行参数禁用此开关?
我在我的 Delphi 项目中使用 msbuild 进行构建自动化。不幸的是,当 MSBuild 执行 DCC32 参数时,我找不到任何对它的引用。通常我首先在 Delphi IDE 中更改编译器参数,然后检查项目文件中更改的内容。但是,这种方法不适用于安静模式,因为我在 IDE 中找不到此选项。
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 类似的方法,但它仍然输出多个空行。