如何保存/加载此数据

时间:2014-04-23 10:23:59

标签: delphi delphi-xe2

我的地图是TGraphicControl,其属性为

HexRow : Integer;
HexColumns : integer;
TempMap :TBitmap;

我想将所有这些数据保存到一个文件中。当我在文件中读到时,我可以获得所有这些数据。像这样......

Procedure Map.Load(name :String);
begin
  Something.LoadfromFile(string);
  TempMap := Something.Bitmap;
  HexRow  := Something.hexRow;
  HexColumn := Something.HexColumn;
end;

但不知道"是什么"是。同样保存它应该保存所有这些属性

1 个答案:

答案 0 :(得分:3)

您需要编写写入和读取信息的方法。您可以使用二进制编写器和读取器对象来完成它。

procedure TMap.SaveToStream(Stream: TStream);
var
  Writer: TBinaryWriter;
begin
  Writer := TBinaryWriter.Create(Stream);
  try
    Writer.Write(HexRow);
    Writer.Write(HexColumn);
    Bitmap.SaveToStream(Stream);
  finally
    Writer.Free;
  end;
end;

procedure TMap.LoadFromStream(Stream: TStream);
var
  Reader: TBinaryReader;
begin
  Reader := TBinaryReader.Create(Stream);
  try
    HexRow := Reader.ReadInteger;
    HexColumn := Reader.ReadInteger;
    Bitmap.LoadFromStream(Stream);
  finally
    Reader.Free;
  end;
end;

或者如果你想变得可爱,那么你可以先写下位图,然后在文件的末尾添加额外的信息。我认为大多数位图读取代码只会忽略最后存储的额外数字。当然,使用除您自己以外的任何软件进行往返旅行时,这些值都无法生存。

要保存到文件并从文件加载,请使用TFileStream

当然,这样的文件格式并没有为将来的增强和修改提供很大的空间。就个人而言,我认为我倾向于使用PNG格式。这为您提供压缩,我相信您可以添加自定义元数据。