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

Вниз

Загрузка содержимое BLOB поля на WebBrowser   Найти похожие ветки 

 
camil   (2014-02-06 15:59) [0]

У меня такая задачка: делать сборник презентаций PowerPoint и сохранять их в базе данных MS Access. Сохранение удачно. Но вот, проблема с чтением из базы и отображением на WebBrowser компоненте выбранную презентацию.

При этом требование не использовать временные файлы.

Есть TabSheet. Компонент WebBrowser расположен на TabSheet. Код чтения из базы и отображения на браузере написан внутри событии OnShow компонента TabSheet.

Выдается ошибка Access Violation.... На строке:
LoadResult := PersistStream.Load(Stream);

Вот весь код:
procedure TfrmTraining.sheetTheoryShow(Sender: TObject);
var
  PersistStream : IPersistStreamInit;
  MemoryStream  : TMemoryStream;
  Stream        : IStream;
  LoadResult    : HRESULT;
begin
        PersistStream := wbrowserTheory.Document as IPersistStreamInit;
        MemoryStream := TMemoryStream.Create;
        try
          Stream := TStreamAdapter.Create(MemoryStream, soReference) as IStream;

          frmdm.GetTheoryAsStream(Stream); // Эта процедера на другом модуле

          LoadResult := PersistStream.Load(Stream); // ТУТ ACCESS VIOLATION
          if FAILED(LoadResult) then MessageBox(Handle, "Не возможно читать!", "Error", 0)
        finally
           MemoryStream.Free;
        end;
end;

Вот код процедуры frmdm.GetTheoryAsStream(Stream);
procedure Tfrmdm.GetTheoryAsStream(var Stream : IStream);
var
  Blob : TMemoryStream;
  TheoryStream : IStream;
begin
    if TheoryExists then
    begin

         Blob := TADOBlobStream.Create(TBlobField(qryTheory.FieldByName("Content")), bmRead);
         TheoryStream := TStreamAdapter.Create(Blob, soReference) as IStream;
         Stream := TheoryStream;
         Blob.Free;
    end;
end;


Что упущен? Буду очень признателен за помощь. Уже 5 часов...

P.S. Assigned(wbBrowser.Document) выдает false. Может причина в этом. Как тогда сделать так, что оно стало true?


 
camil   (2014-02-06 16:42) [1]

Добавил в FormCreat строку: wbrowserTheory.Navigate("about:blank"); Все равно выдается EAccessViolation...


 
sniknik ©   (2014-02-06 17:37) [2]

вот это точно работает (если убрать "корявости")
http://www.swissdelphicenter.ch/torry/showcode.php?id=1096


 
sniknik ©   (2014-02-06 18:06) [3]

вместо всего в GetTheoryAsStream почему не сделать просто qryTheory.FieldByName("Content")).AsString
?
если в акцесной базе поле типа "оле обьект" куда сохраняли "перетаскиванием"/средствами акцесса, то там могут быть "паразитные" байты в начале и конце реальных данных.



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

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

Наверх




Память: 0.47 MB
Время: 0.007 c
2-1384890210
Denh
2013-11-19 23:43
2015.03.29
JSON сохранить "C: temp cv.txt" и обратно загрузить TJSONObject


15-1407258646
Вова
2014-08-05 21:10
2015.03.29
Си в Делфи


2-1391642421
Drowsy
2014-02-06 03:20
2015.03.29
TibDataSet фильтруется через Filter,Filtered?


2-1391686016
XCoder
2014-02-06 15:26
2015.03.29
Возврат результата из вложенной функции


15-1407412508
Ламот
2014-08-07 15:55
2015.03.29
Как залить прошивку на железку с предустановленным U-Boot?