Уважаемые разработчики!
Вопрос про сохранение файла из blob поля,
бьюсь уже не мало времени
для сохранения взял примерчик и написал —
procedure TForm1.Button2Click(Sender: TObject);
var
blb, f: TStream;
begin
if not IBTable1.FieldByName('DATA').isNull then
begin
SaveDialog1.Execute;
blb:=IBTable1.CreateBlobStream(IBTable1.FieldByName('DATA'),bmRead);
f := TFileStream.Create(SaveDialog1.FileName, fmCreate);
f.CopyFrom(blb, blb.Size);
f.Free;
blb.Free;
end
else
ShowMessage('Blob is empty');
end;
так вот сохраняет он вордовский файл, но при его открытии ворд никак не может определить кодировку, квадратики там заместо буковок. В базе данные корректные, так как в olecontainer документики открываются. Пробовал и через filestream и blobstream, тоже самое происходит.
Заранее благодарю.
ну а теперь если написать, как советует народ
==
var FS: TFileStream;
BS: TBlobStream;
begin
BS:=TBlobStream.Create(ibtable1.fieldbyname('DATA') as TBlobField, bmRead);
FS:=TFileStream.Create('c:\test.doc', fmCreate);
FS.CopyFrom(bs, bs.size);
end;
==
то ошибка invalid class typecasr на первой строчке
в чем, интересно, грабли?
может, для IB надо TIBBLOBField или что-то в этом роде?
Хотя, по идее, должно работать и CreateBLOBStream. Посмотрите, кстати, какой тип она возвращает.
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Здравствуйте, Slicer [Wirkwood], Вы писали:
SW>Ну или пишите TStream вместо TBLOBStream, не так уж и впилось, в конце концов.
SW>Slicer
да у меня тут идея, что я не так сохраняю в базу, т.е. сохраняю я через OleContainer, и получается. что он как-то криво сохраняет, попробую стримом сохранять
Здравствуйте, sowell, Вы писали:
S>Здравствуйте, Slicer [Wirkwood], Вы писали:
SW>>Ну или пишите TStream вместо TBLOBStream, не так уж и впилось, в конце концов.
SW>>Slicer
S>да у меня тут идея, что я не так сохраняю в базу, т.е. сохраняю я через OleContainer, и получается. что он как-то криво сохраняет, попробую стримом сохранять
Посмотри методы OleContainer SaveToStream и LoadFromStream. Он сохраняет информацию о положении в виде структуры определенного размера. Помоему заголовочная часть фиксирована. Читай с со смещения равным размером этого блока.
Не ты первый.
и солнце б утром не вставало, когда бы не было меня