![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение в файл [D7, WinXP]
Aleron © (2006-09-26 17:55:00)Имеется images:array[0..20,0..20] of Timage;
Как лучше организовать сохранение/загрузку данных из <<images>> в файл?
Плохиш (2006-09-27 01:38:00) [1]
> Aleron (26.09.06 18:44) [6]
Достаточно писать в файл последовательно: размер, данные, размер, данные...
Aleron (2006-09-26 18:44:00) [2]Вот нашел вариант:
но почемуто у меня не работает...
Сохранение:
procedure TForm1.Button2Click(Sender: TObject);
var
MemoryStream: TMemoryStream;
FileStream: TFileStream;
Writer: TWriter;
Buffer: Pointer;
Size: Longint;
Column: Integer;
Row: Integer;
begin
MemoryStream := TMemoryStream.Create;
FileStream := TFileStream.Create('c:\save.map', fmCreate);
Writer := TWriter.Create(FileStream, $1000);
try
for Column := 0 to 20 do
for Row := 0 to 20 do
begin
MemoryStream.Clear;
images[column,row].Picture.Bitmap.SaveToStream(MemoryStream);
Buffer := MemoryStream.Memory;
Size := MemoryStream.Size;
Writer.WriteInteger(Size);
Writer.Write(Buffer^, Size);
end;
finally
Writer.Free;
FileStream.Free;
MemoryStream.Free;
end;
end;
При чтении пишет что не тот тип:
MemoryStream := TMemoryStream.Create;
FileStream := TFileStream.Create('c:\save.map', fmOpenRead);
Reader := TReader.Create(FileStream, $1000);
try
for Column := 0 to 20 do
for Row := 0 to 20 do
begin
Size := Reader.ReadInteger;
MemoryStream.SetSize(Size);
Buffer := MemoryStream.Memory;
Reader.Read(Buffer^, Size);
images[Column,Row].Picture.Bitmap.LoadFromStream(MemoryStream);
end;
finally
Reader.Free;
FileStream.Free;
MemoryStream.Free;
end;
DrawGrid1.Repaint;
dr Gonzo, щас твой вариант попробую..
dr Gonzo (2006-09-26 18:32:00) [3]fs: TFileStream;
...
fs:=TFileStream.Create('xxx.xxx', fmOpenRead);
fs.Seek(0, soFromBeginning);
и начинаем читать в том порядке в котором записали...
images[x].Picture.Bitmap.loadFromStream(fs);
@!!ex (2006-09-26 18:29:00) [4]LoadFromStream если по логике... Нет? :D
flaxe (2006-09-26 18:26:00) [5]Хм.. а как мне его тогда загружать оттуда???
clickmaker (2006-09-26 18:24:00) [6]SaveToStream в один стрим, а потом сохранить в файл
dr Gonzo (2006-09-26 18:24:00) [7]Например сохранение в поток : images[x].Picture.Bitmap.SaveToStream(...);
Потом поток в файл на диске.