IDE 生成的 USEFORM 宏调用更改其顺序

标签 ide c++builder c++builder-xe

我们有一个 C++Builder XE 项目(VCL Forms Application),里面有几十个表单和单元。每当添加、删除或重命名属于项目的文件时,IDE 应该做两件事:

  • 如果受影响的单元是表单或框架,则会在项目源文件 (ProjectName.cpp) 中添加或更改对 USEFORM 宏的调用
  • 添加或更改项目文件 (ProjectName.cbproj) 中的 CppCompile 元素

  • 但是,IDE 不仅会进行必要的更改,还会对一些现有的 USEFORM 和 CppCompile 记录进行混洗,即使它们不受更改的影响。如果我添加一个单元(cpp 和头文件),即使不需要对项目源进行任何更改,只需要对 cbproj 文件进行任何更改,也会对 USEFORM 进行混洗。

    我没有看到有关如何形成新订单的特定模式。如果我编辑或重命名单个单元,大约一半的 USEFORM 似乎改变了位置,而只有几个或没有 CppCompile 记录。如果在两台不同的机器上对项目的副本进行更改,大多数更改似乎是相似的,但不是全部。这表明重新排序不是随机的。

    当使用 Subversion 合并更改时,该行为会导致问题,因为它强制手动解决由更改顺序造成的冲突。

    所以问题是:什么可能导致上述行为以及如何摆脱它?

    最佳答案

    我一直无法找到该问题的适当解决方案,但这里有一个简单的方法可以让它稍微不那么烦人:

    采用从不将 IDE 生成的随机更改提交到版本控制存储库的策略。 每当您更改导致文件混淆的代码时,请在 ProjectName.cpp 中恢复所有不必要的更改。和 ProjectName.cbproj .此时它仍然相当容易,因为您知道文件的哪些部分实际上应该更改。这样,体力劳动在仍然需要最少的工作量时进行。此外,工作必须只执行一次,而不是保持更改不变,在这种情况下,每次有人合并更改时都必须重复工作。

    关于IDE 生成的 USEFORM 宏调用更改其顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15919853/

    相关文章:

    c++builder - 在 RAD Studio XE8 中编译时出现 "Unable to perform link"错误

    C++ IDE 功能 : Synchronized viewing columns for headers and implementation files?

    php - 哪些 PHP IDE 支持 Facebook XHP 扩展?

    debugging - 为什么在 IDE 中调试更好?

    c++ towupper() 不转换某些字符

    c++ - Borland C++ Builder 6 调整输出可执行文件的大小以适应屏幕

    c++ - 如何解决 C++Builder 中的链接器错误 "LIBCURL.LIB contains invalid OMF record, type 0x21 (possibly COFF) "?

    java - 如何连接mysql和eclipse?

    c++ - 如何为每个 XML 节点添加换行符?

    c++ - 为什么在阻塞模式下不会为 TServerSocket 触发 OnClientConnect 和 OnClientError 事件