Цитата(former @ 1.4.2006, 22:38 ) | Но как запихнуть туда ещё текст (например записи)? |
Да очень просто.
Код | procedure SaveData(const s: String; BinData: TStream; FilePath: String); var FS: TFileStream; Len: Integer; Len64: Int64; begin FS := TFileStream.Create(FilePath,fmCreate); try Len := Length(s); FS.Write(Len,SizeOf(Integer)); FS.Write(s[1],Len); Len64 := BinData.Size; FS.Write(Len64,SizeOf(Int64)); FS.CopyFrom(BinData,Len64); finally FS.Free; end; end;
procedure ReadData(var s: String; BinData: TStream; FilePath: String); var FS: TFileStream; Len: Integer; Len64: Int64; begin FS := TFileStream.Create(FilePath,fmOpenRead); try FS.Read(Len,SizeOf(Integer)); SetLength(s,Len); FS.Read(s[1],Len); FS.Read(Len64,SizeOf(Int64)); BinData.CopyFrom(FS,Len64); finally FS.Free; end; end;
|
Пример сохранения:
Код | procedure TForm1.Button1Click(Sender: TObject); var FS: TFileStream; begin FS := TFileStream.Create('unit1.pas',fmOpenRead); try SaveData('Это коммент',FS,'BinData.dat'); finally FS.Free; end; end;
|
Пример восстановления:
Код | procedure TForm1.Button2Click(Sender: TObject); var MS: TMemoryStream; s: String; begin MS:= TMemoryStream.Create; try ReadData(s,MS,'BinData.dat'); //Здесь исполльзуем загруженные данные finally MS.Free; end; end;
|
|