Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.15;
Скачать: CL | DM;

Вниз

Сохранение в файл   Найти похожие ветки 

 
Aleron   (2006-09-26 17:55) [0]

Имеется images:array[0..20,0..20] of Timage;
Как лучше организовать сохранение/загрузку данных из <<images>> в файл?


 
clickmaker ©   (2006-09-26 18:24) [1]

SaveToStream в один стрим, а потом сохранить в файл


 
dr Gonzo ©   (2006-09-26 18:24) [2]

Например сохранение в поток : images[x].Picture.Bitmap.SaveToStream(...);
Потом поток в файл на диске.


 
flaxe ©   (2006-09-26 18:26) [3]

Хм.. а как мне его тогда загружать оттуда???


 
@!!ex ©   (2006-09-26 18:29) [4]

LoadFromStream если по логике... Нет? :D


 
dr Gonzo ©   (2006-09-26 18:32) [5]

fs: TFileStream;
...
fs:=TFileStream.Create("xxx.xxx", fmOpenRead);
fs.Seek(0, soFromBeginning);

и начинаем читать в том порядке в котором записали...

images[x].Picture.Bitmap.loadFromStream(fs);


 
Aleron   (2006-09-26 18:44) [6]

Вот нашел вариант:
но почемуто у меня не работает...
Сохранение:
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, щас твой вариант попробую..


 
Плохиш ©   (2006-09-27 01:38) [7]


> Aleron   (26.09.06 18:44) [6]

Достаточно писать в файл последовательно: размер, данные, размер, данные...



Страницы: 1 вся ветка

Текущий архив: 2006.10.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.033 c
3-1155536671
rsa_
2006-08-14 10:24
2006.10.15
что наиболее надежнее эффективнее? MySQL or MSSQL?


2-1159119975
ZiTrAX
2006-09-24 21:46
2006.10.15
Минимальный размер программы


1-1157642410
oleggar
2006-09-07 19:20
2006.10.15
webbrowser


1-1156866524
Jink
2006-08-29 19:48
2006.10.15
Несколько окон одного приложения fsStayOnTop


3-1155632078
Bless
2006-08-15 12:54
2006.10.15
TADODataSet.Next. Почему так медленно?