gpt4 book ai didi

delphi - 为了防止 Delphi 损坏 .DPR 中的使用列表和 {$*.RES},不应该做什么

转载 作者:行者123 更新时间:2023-12-03 15:01:19 29 4
gpt4 key购买 nike

每隔几周,我就会遇到这样的情况:在 Delphi 项目中的 use 单元上执行 IDE 操作时,它会破坏 .dpr 文件。

发生的情况是它重建了uses列表,但位置错误。

我想知道要避免什么使用模式,这样我就不会再次遇到此错误。

我在许多 Delphi 版本中都遇到过这个错误。我知道它至少存在于 Delphi XE2(今天又发生了)、XE、2007、2006 和 7 中。

损坏的片段通常结构如下:

ususes
Forms,
..
LastUnitInUses in 'LastUnitInUses.pas';

R *.RES}

应该通过删除一个 us 并添加一个 {$ 来纠正:

uses
Forms,
..
LastUnitInUses in 'LastUnitInUses.pas';

{R *.RES}

出错的示例文件:

program SysUtilsFormatTests;
{

Delphi DUnit Test Project
-------------------------
This project contains the DUnit test framework and the GUI/Console test runners.
Add "CONSOLE_TESTRUNNER" to the conditional defines entry in the project options
to use the console test runner. Otherwise the GUI test runner will be used by
default.

}

{$IFDEF CONSOLE_TESTRUNNER}
{$APPTYPE CONSOLE}
{$ENDIF}

ususes
Forms,
TestFramework,
GUITestRunner,
TextTestRunner,
SysUtilsFormatUnit in 'SysUtilsFormatUnit.pas';

R *.RES}

begin
Application.Initialize;
if IsConsole then
with TextTestRunner.RunRegisteredTests do
Free
else
GUITestRunner.RunRegisteredTests;
end.

更正的 .dpr 文件示例:

program SysUtilsFormatTests;
{

Delphi DUnit Test Project
-------------------------
This project contains the DUnit test framework and the GUI/Console test runners.
Add "CONSOLE_TESTRUNNER" to the conditional defines entry in the project options
to use the console test runner. Otherwise the GUI test runner will be used by
default.

}

{$IFDEF CONSOLE_TESTRUNNER}
{$APPTYPE CONSOLE}
{$ENDIF}

uses
Forms,
TestFramework,
GUITestRunner,
TextTestRunner,
SysUtilsFormatUnit in 'SysUtilsFormatUnit.pas';

{$R *.RES}

begin
Application.Initialize;
if IsConsole then
with TextTestRunner.RunRegisteredTests do
Free
else
GUITestRunner.RunRegisteredTests;
end.

最佳答案

据我所知,唯一有效的方法是让 IDE 管理 .dpr 文件。

  • 请勿添加评论。
  • 不要使用 $IFDEF 等条件语句。
  • 请勿修改 .dpr 文件中的代码。

如果您执行上述任何操作,IDE 会予以反击。

就我个人而言,我会做所有这些事情并在提交时进行反击。我使用 VCS 来防御伪造的 IDE 更改。这并不理想,但却是最好的选择。

关于delphi - 为了防止 Delphi 损坏 .DPR 中的使用列表和 {$*.RES},不应该做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16775186/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com