数十のフォームとユニットを含む C++Builder XE プロジェクト (VCL フォーム アプリケーション) があります。プロジェクトに属するファイルが追加、削除、または名前変更されるたびに、IDE は次の 2 つのことを行う必要があります。
- 影響を受けるユニットがフォームまたはフレームの場合、プロジェクト ソース ファイル (ProjectName.cpp) で USEFORM マクロの呼び出しが追加または変更されます。
- プロジェクト ファイル (ProjectName.cbproj) の CppCompile 要素が追加または変更されている
ただし、IDE は、必要な変更を行うだけでなく、既存の USEFORM レコードと CppCompile レコードの一部を、変更の影響を受けなくてもシャッフルします。ユニット (cpp とヘッダー ファイル) を追加すると、プロジェクト ソースを変更する必要がなく、cbproj ファイルのみを変更する必要がある場合でも、USEFORM がシャッフルされます。
新しい秩序がどのように形成されるかについて、特定のパターンは見当たりません。1 つのユニットを編集または名前変更すると、USEFORM の約半分の位置が変更されたように見え、CppCompile レコードはわずか 2 つまたはまったく変更されません。2 台の異なるマシンでプロジェクトのコピーに変更が加えられた場合、ほとんどの変更は似ているように見えますが、すべてではありません。これは、並べ替えがランダムではないことを示しています。
この動作は、Subversion を使用して変更をマージするときに問題を引き起こします。これは、順序の変更によって発生した競合を手動で解決する必要があるためです。
問題は、前述の動作を引き起こしている可能性があるものと、それを取り除く方法です。