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

Вниз

Как сохранить переменные типа TBitmap и String в одном файле   Найти похожие ветки 

 
msalex ©   (2002-07-28 17:26) [0]

Как сохранить переменные типа TBitmap и String в одном файле?

Например я делаю так,


type
TMyVar = packed record
Image: TBitmap;
Caption: string[32];
end;

var
MyVar: TMyVar;

...

procedure SaveMap(FileName:string);
var
zFile:File;
WriteCount:integer;
begin
AssignFile(zFile,FileName);
Rewrite(MyVar, 1);
BlockWrite(zFile, MyVar, sizeof(MyVar), WriteCount);
CloseFile((zFile);


а оно не сохраняется.


 
Юрий Зотов ©   (2002-07-28 17:43) [1]

А размер файла всегда 37 байт. Хоть большая картинка, хоть маленькая. Так?

Потому что Вы пишете не картинку, а адрес компонента. Который действителен только для текущего сеанса только этой программы.

Выход такой. Никаких TMyVar не нужно. Создаете TFileStream. Сначала пишете в него строку (можно просто string, ограничивать длину не обязательно). Потом в него же, НЕ МЕНЯЯ ПОЗИЦИИ дописываете САМУ картинку (посмотрите, как это сделано в методе TBitmap.SaveToStream).

Читаете в том же порядке.


 
msalex ©   (2002-07-29 23:11) [2]

Почему у меня не получается выгрузить файл из потока процедурой
free.

procedure TForm1.Button1Click(Sender: TObject);
var
ZStm:TStream;
FileName: string[255];
Bitmap: TBitmap;
begin
try
ZStm:= TFileStream.Create("C:\test.bmp",fmOpenWrite,fmShareDenyWrite);
FileName:="Component";
Bitmap:= TBitmap.Create;
Bitmap.LoadFromFile("C:\Alex\bitmap.bmp");
Bitmap.SaveToStream(Zstm);
ZStm.WriteBuffer(FileName,sizeof(FileName));
FileName:="world";
ZStm.WriteBuffer(FileName,sizeof(FileName));
//ZStm.CopyFrom(MStm,MStm.Size);
except
Bitmap.Free;
ZStm.Free;
end;
end;


 
Юрий Зотов ©   (2002-07-30 00:57) [3]

Наверное, потому, что Free стоит в блоке except.
Нет exception - нет и Free. Все логично.

Вероятно, Вы хотели написать finally, а не except?
:о)



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
1-35320
msalex
2002-07-28 17:26
2002.08.12
Как сохранить переменные типа TBitmap и String в одном файле


14-35437
Malder
2002-07-13 01:59
2002.08.12
Когда же форум доделают ?


14-35431
Baz
2002-07-15 13:59
2002.08.12
Вопрос врачам или спортсменам


6-35396
KPOT
2002-05-09 13:22
2002.08.12
Как проще всего сразу отказать клиенту ?


4-35502
Pavlik Morozov
2002-05-26 13:44
2002.08.12
System Tray иконки