如何防止Delphi意外修改其DPR(项目源)

如何防止Delphi意外修改其DPR(项目源),delphi,project,Delphi,Project,为了维护其项目,Delphi有时会从DPR文件(项目源)中添加或删除内容。我非常喜欢在DPR中格式化我的东西,就像它是一个普通的单元一样,例如将“使用过的”框架引用和项目源文件组合在一起。我复制了它,并可以在这种情况发生时返回,但每隔一段时间,我就会注意到DPR的所有源文件引用都被粉碎成一个块 还有其他人遭受这种痛苦吗?是否有任何方法可以防止这种情况发生(只读文件除外)。 谢谢这个.dpr文件是一个普通的Delphi文件,好吧,但是一旦它在IDE中打开,它就或多或少地被IDE“拥有”。当IDE认

为了维护其项目,Delphi有时会从DPR文件(项目源)中添加或删除内容。我非常喜欢在DPR中格式化我的东西,就像它是一个普通的单元一样,例如将“使用过的”框架引用和项目源文件组合在一起。我复制了它,并可以在这种情况发生时返回,但每隔一段时间,我就会注意到DPR的所有源文件引用都被粉碎成一个块

还有其他人遭受这种痛苦吗?是否有任何方法可以防止这种情况发生(只读文件除外)。
谢谢

这个.dpr文件是一个普通的Delphi文件,好吧,但是一旦它在IDE中打开,它就或多或少地被IDE“拥有”。当IDE认为有必要添加或删除代码时(例如,添加单元、更改某些设置等),无法阻止IDE添加或删除代码。这也意味着它可以重新格式化部分代码


如果你想要“不可变”的代码,就把它放在一个单元里。

我想鲁迪是对的

在我看来,更明智的做法是不要在编辑器中使用dpr块-项目经理就是为了这样做的-用手你可能会破坏你的项目设置,并在大型项目中引入一些难以追踪的bug。至于格式化,在DelphiXE中有一个自动格式化,可以完成整个项目,并且是可配置的

我经常编辑dpr的“程序”部分(这也需要一些知识和谨慎),但不编辑uses块

另外一点:在dpr中发生的一些事情可以通过项目选项设置进行控制


HTH

我为我的大多数项目所做的是拥有以下两个文件:

  • MyProgram.dpr
  • MyProgramUnit.pas
  • MyProgramUnit
    有一个公共方法
    Main
    ,该方法包含.dpr中的所有逻辑(包括任何条件定义)

    MyProgram
    只需调用
    Main

    编辑1:

    您可以将使用列表放入
    MyProgramUnit.pas
    ,但它们不会自动成为项目的一部分。 这可能是个问题,也可能不是,这取决于您是否喜欢在搜索路径中使用Delphi查找单元,或者向项目中添加文件以使其可见

    您可以做的是在
    MyProgramUnit.pas
    中记录使用列表,并按原因对它们进行分组。这是我通常在大多数单元中所做的,而不仅仅是在主单元中

    编辑2:

    不要走
    {$I MyIncludeFile.inc}
    的路。
    Delphi—尤其是IDE—不适合包含文件。代码完成等,在不规则的地方失败


    在过去,我一直在大量使用include文件;不再是这样了。我甚至不再将它们用于定义,而是从
    {$IFDEF define}。。。{$ENDIF}
    朝向
    {$IF Constant1>=Constant2}。。。{$IFEND}

    我个人在我的DPR文件末尾的一个巨大注释中复制了我的uses子句。 因此,当Delphi修改它时,我会从注释中“恢复”它。 当然,我必须谨慎地保持我的“使用评论”是最新的

    注:
    我正在使用扫描项目文件的外部工具,因此我不能使用“外部单元”方法,尽管这似乎是最干净的解决方案。

    修订控制是解决方案。@David:与其说是解决方案,不如说是解决方案。@Toto因为Brian正在手动复制此文件,我认为使用一些修订控制可以解决很多问题,但你的观点是正确的@IDE的Mikey经常破坏我的.dpr文件。My.dpr文件的uses子句中有一个条件。另外,我的一些.dpr文件在开始和结束之间是非标准的。因此,不,开发人员不能控制IDE。@Mikey:不-IDE给出了一个不太微妙的暗示,它的项目管理设计可能会更好。:-。。。或者根本不使用IDE。使用记事本和命令行编译器。:-)我早就放弃了,并且意识到DelphiIDE拥有.dpr文件,特别是我在Uses子句中写的任何东西都可能被更改。由我来提交或恢复更改(版本控制)。任何不使用版本控制并进行非现场备份的人;好。。。我很遗憾,我可能会用一个更好的编辑器来代替记事本,但这是可能的。真正的程序员…真正的程序员。。。使用VIM。@Warren-“我很同情da傻瓜”+1IDE对其.dpr和.dpk文件非常专横+那是个好主意。“你能把所有的用途都放进去吗?你可以使用任何你想要的单位,”大卫。但是在MyProgramUnit中使用单元并不能使它们成为项目的一部分,因此该单元没有理由使用它不直接需要的任何东西。@Rob所以这是一种半解决方案。那么{$I MyMain.inc}如何将必须远离.dpr的代码放在.inc文件中呢?我必须承认我不是include文件的粉丝,我从来没有尝试过这个,但是IDE会接受这个吗?谁尝试过这一点,并能提供更多信息?+1这就是我们为控制台项目所做的。对于客户端和服务器项目,应该再次查看它。。。