Форум: "Начинающим";
Текущий архив: 2015.03.29;
Скачать: [xml.tar.bz2];
ВнизЗагрузка содержимое 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.001 c