Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Сохранить F1Book в Blob поле


Автор: Poseidon 18.5.2005, 14:31
Код
uses vcf1, dbtables; 


procedure SaveSpreadsheet(F1Book: TF1Book); 
var 
  BlobStream: TBlobStream; 
  MyBlob: HGlobal; 
  pblob: Pointer; 
begin 
  with Datamodule1.Query1 do 
  begin 
    Set8087CW($133f); 
    try 
      Application.ProcessMessages; 
      F1Book.SaveWindowInfo; 
      MyBlob := GlobalAlloc(GMEM_MOVEABLE, 2000); 
      try 
        F1Book.WriteToBlob(MyBlob, 0); 
        pBlob := globalLock(MyBlob); 
        try 
          Blobstream := TBlobStream.Create(TBlobField(FieldByName('QUOTE_BLOB')), 
            bmWrite); 
          try 
            Blobstream.Write(pBlob^, GlobalSize(myBlob)); 
          finally 
            Blobstream.Free; 
          end; 
        finally 
          globalUnlock(MyBlob); 
        end; 
        F1book.IF1Book_Modified := False; 
      finally 
        globalFree(myblob); 
      end; 
    finally 
      Set8087CW(Default8087CW); 
      Application.ProcessMessages; 
    end; 
  end; 
end; 

//Depending on your Delphi Version (<D4), you will need: 

var 
  Default8087CW: Word = $1332; 

procedure Set8087CW(NewCW: Word); 
asm 
  MOV     Default8087CW,AX 
  FLDCW   Default8087CW 
end; 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)