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

Вниз

Загрузка из BLOB поля в OleContainer   Найти похожие ветки 

 
Snip ©   (2004-11-19 17:31) [0]

Привет Всем! Такая проблема, загружаю через поток из BLOB поля IB в поток, а из него в OleContainer, при загрузки в контейнер вылетает ошибка Out of memory. Что такое может быть такое?


 
Sergey_Masloff   (2004-11-19 22:30) [1]

>Что такое может быть такое?
В 17 строке посмотри...
На самом деле неплохо глянуть код как ты это делаешь ;-)


 
Snip ©   (2004-11-20 13:07) [2]


var
 Table: TIBTable;
begin
 try
   try
     Table:=TIBTable.Create(Application);
     Table.Database:=DM.IBDatabase;
     Table.TableName:="ITEMS";
     Table.Open;
     Table.Filter:="id = "+IntToStr(Integer(ListView.Selected.Data));
     Table.Filtered:=True;
     OleContainer.LoadFromStream(Doc.CreateBlobStream(TBLOBField(Table.ieldByName("ole")), bmRead));
   except
   end;
 finally
   if Assigned(Stream) then
     Stream.Free;
   if Assigned(Table) then
     Table.Free;
 end;
end;


 
Snip ©   (2004-11-20 13:08) [3]


if Assigned(Stream) then
 Stream.Free;

Лишнее :))))


 
Snip ©   (2004-11-20 13:10) [4]

Вот, делаю уже так:

var
Table: TIBTable;
begin
try
  try
    Table:=TIBTable.Create(Application);
    Table.Database:=DM.IBDatabase;
    Table.TableName:="ITEMS";
    Table.Open;
    Table.Filter:="id = "+IntToStr(Integer(ListView.Selected.Data));
    Table.Filtered:=True;
    OleContainer.LoadFromStream(Table.CreateBlobStream(TBLOBField(Table.FieldByName("ole")), bmRead));
  except
  end;
finally
  if Assigned(Table) then
    Table.Free;
end;
end;


 
Johnmen ©   (2004-11-21 02:29) [5]

http://delphimaster.net/view/3-1100439265/


 
Fran   (2004-11-21 12:23) [6]

Я делаю так:
1. создать поток
2. записвть в него BLOB
3. сохраняю поток в файл
4. загрузить из файла Ole
5. удаляю файл с диска

загрузить документ в OLE сразу не получается из-за разных  Windows-ов и офисов у клиентов, только через файл все работает надежно.

Пример кода:

procedure btnReadBlobClick(Sender: TObject);
var
A : TStream;
B : TMemoryStream;//FIBBlob
begin
// Blob_Ole - OleConteiner
 if not (Blob_Ole.State in [osEmpty])
 then Blob_Ole.DestroyObject;

  try
  Screen.Cursor := crHourGlass;
   with quGetBlob do  begin
   Close;
   SelectSQL.Clear;
   SelectSQL.Add("SELECT BLOBBIN FROM INHFOTO");
   SelectSQL.Add("WHERE REC_NO = "+IntToStr(nRecBlob));
   Open;
   Edit;
   A := CreateBlobStream(FieldByName("BLOBBIN"), bmRead);// as TBlobField
   A.Position := 0;
   B := TMemoryStream.Create;
   B.LoadFromStream(A);
   B.Position := 0;
   B.SaveToFile(gsCurrDirZAGS+"Tmpfiles\"+sFileNameBlob);
   B.Position := 0;
         Blob_Ole.CreateObjectFromFile(gsCurrDirZAGS+"Tmpfiles\"+sFileNameBlob,False);
         Blob_Ole.Visible := True;
         Blob_Ole.Hint := sDescBlob+#10#13+"Ôàéë: "+sFileNameBlob;

   Close;
   end;//with dmMain.quGetBlob

  finally
  DeleteFile(gsCurrDirZAGS+"Tmpfiles\"+sFileNameBlob);
  B.Free;
  A.Free;
  Screen.Cursor := crDefault;
  end;//try

 end;//if trvListBlob.Selected.Data <> nil
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.036 c
1-1101636516
Piter
2004-11-28 13:08
2004.12.19
Работа с классами в DLL


14-1101999308
Denis_
2004-12-02 17:55
2004.12.19
Где скачать русско-англиский словарь?


1-1102260155
Камиль
2004-12-05 18:22
2004.12.19
Как открыть HTML файл в Delphi6?


3-1100508839
Фазер
2004-11-15 11:53
2004.12.19
Ещё один вопрос по except


1-1102005229
Unknown user
2004-12-02 19:33
2004.12.19
Соответствие классов