Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранение в файл [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(...);
Потом поток в файл на диске.


Наверх

Титульная страница Поиск, карта сайта Написать письмо