テキスト ファイルとして開始された DFM ファイルがあります。
数年後、新しいバージョンの 1 つで、Borland Developer Studio がバイナリ形式に変更しました。
さらに、ファイルが感染しました。
誰かが私に今何をすべきか説明できますか? バイナリ ファイル構造の読み取り方法はどこで確認できますか?
DFM ファイルがどうなるかはわかりましたが、その理由はわかりません。
テキスト ファイルからバイナリ ファイルへの変更の発生は既知であり、別の質問のスタック オーバーフローで見つけることができます。ファイルの感染についてのみ説明します。
DFM ファイルの元の言語である Pascal では、文字列によって次のように定義されます。最初のバイトは文字列の長さ (0 ~ 255) で、その他の文字は文字列です。(文字列の長さがヌル文字で認識される C とは異なります)。
誰か (おそらく BDS?) がファイルをテキスト ファイルからバイナリ ファイルに変更しているときに、長さ 13 (0D) のすべての文字列を長さ 10 (0A) に変更しました。このように、文字列は 10 文字で終了し、次の文字はプロパティの値でした。
バイナリ エディタをダウンロードし、長さ 10 のすべてのオカレンスを修正しました。ファイルは表示され、適切にコンパイルされました。
(プロパティの長さが感染しただけでなく、Icon.Data プロパティの 1 バイトが 0D から 0A に置き換えられました)