Показать сообщение отдельно
  #1  
Старый 09.09.2010, 13:25
eldaeron eldaeron вне форума
Прохожий
 
Регистрация: 05.05.2008
Сообщения: 15
Репутация: 10
По умолчанию сохранение blob на диск

Доброго времени суток!
такая проблема, есть dataset, в нем одно поле и оно есть blob с картинкой (gif).
картинку надо сохранить на диск.
если делать так
Код:
procedure TestMacroProc (MName:string; AParams:TObject);
var 
  FS: TFileStream; 
  wPrm:TmParams;
  ds:Tdataset;
  buffer:Variant;
  buf:TBlobByteData;
  zap:string;
  s:string;
begin
  img:=Timage.create(nil);
  wPrm:=AParams as TmParams;
  zap:='select image from dent_teeth_map where map_id='+wPrm.Values[0];
  ds:=CreateSQLDataset(zap,true);
  ds.Open;
    buffer:=ds.GetBlobFieldData(1,buf);
    FS:=TFileStream.Create('c:\1.gif', fmCreate); // создаем файл
    with FS do
    try
       Seek(0, soFromBeginning); // перемещаем указатель в начало потока
       WriteBuffer(buf, buffer);// записываем целое
       finally
       Free; // закрываем файл, освобождаем память
    end;
  ds.close;
end; 
то файл создается. по длине он совпадает с исходным файлом(который грузился в базу) но вот по содержимому он совершенно другой и как следствие это уже получается не картинка а файл с мусором
Ответить с цитированием