掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
動的配列をバイナリで書き込むには? (ID:1188)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Map:array of array of MapRec; となってますので、2次元配列ですね。 2次元配列は、1次配列がポインタ配列になるはずですので、 1行ずつサイズとデータを書き込みながら ループで回さないといけないと思います。 読み込むときは、逆にサイズを読み込んで、 配列の長さを確保して、データを読み込むという 手順になります。 下記のようになります。 フィールドに String などのように動的に長さが決まる物が入っている場合は、 その部分は、さらにサイズとデータをそれぞれ書き込む必要があります。 var FileName: string; FFile:TFileStream; Len, i, j: Byte; begin FileName := 'Test.dat'; //2次元配列の書き込み FFile := TFileStream.Create(FileName, fmCreate); try Len := Length(Map); //1次配列の長さ FFile.Write(Len, SizeOf(Len)); //それを書き込む for i := 0 to Len - 1 do begin Len := Length(Map[i]); //i行目の2次配列の長さ FFile.Write(Len, SizeOf(Len)); //それを書き込む FFile.Write(Map[i, 0], SizeOf(MapRec) * Len); //i行目の2次配列のデータを書き込む end; finally FFile.Free; end; //2次元配列の読み込み FFile := TFileStream.Create(FileName, fmOpenRead); try FFile.Read(Len, SizeOf(Len)); //1次配列の長さを読み込む SetLength(Map, Len); for i := 0 to Len - 1 do begin FFile.Read(Len, SizeOf(Len));//i行目の2次配列の長さを読み込む SetLength(Map[i], Len); FFile.Read(Map[i, 0], SizeOf(MapRec) * Len);//i行目の2次配列のデータを読み込む end; finally FFile.Free; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.