Turbo Pascalには、内部状態をファイルに保存できる古いアプリケーションがあり、C#アプリケーションでこのファイルの読み取り/書き込みができる必要があります。
古いアプリケーションは、さまざまなメモリ内データ構造をダンプすることによってファイルを生成します。ある場所では、アプリケーションはメモリの範囲をダンプするだけであり、このメモリ範囲にはいくつかの配列が含まれています。実際の配列要素の直前のバイトの目的を削除しようとしています。特に、ブロックの最初の2つの項目は次のように表すことができます。
type
string2 = string[2];
stringarr2 = array[0..64] of string2;
string4 = string[4];
stringarr4 = array[0..64] of string4;
データファイルには、次のバイトシーケンスがあります。
25 00 02 02 41 42 02 43 44 ...
は25
配列内の要素の数です。これ02 41 42
は最初の文字列要素「AB」です。これ02 43 44
は2番目の文字列要素「CD」などです。00 02
配列要素数と最初の配列要素の間が何を指しているのかわかりません。配列要素の数が25 00
で、要素のサイズが02
である可能性がありますが、各配列要素のサイズは実際には3バイトです。
4文字の文字列の配列が始まるファイル内の場所に、次のように表示されます。
25 00 04 00 00 04 41 42 43 44 04 45 46 47 48
繰り返しますが、25
これは配列内の要素の数です。04 41 42 43 44
は配列の最初の要素であり、「ABCD」などです。その間にバイトがあります00 04 00 00
。多分それらは旗です。たぶん、それらは配列の形状のある種の指標です(しかし、私には方法がわかりませんし02
、04
両方とも1次元配列を示しています)。
さまざまな種類の配列をファイルに書き込もうとするTurboPascalにアクセスできず、Free Pascalのようなものをインストールする権限もありません。そのため、これらの行に沿って実験する機会は非常に限られています。
Turbo Pascalにはアレイがなかったため、これらのアレイは動的ではありません。
ほこりっぽい思い出をよろしくお願いします。