我的目的是想直接从内存流里读html到TwebBroswer里显示。
网上找了一段代码:procedure LoadStream(WebBrowser: TWebBrowser; Stream: TStream);
var
PersistStreamInit: IPersistStreamInit;
StreamAdapter: IStream;
MemoryStream: TMemoryStream;
begin
{Load empty HTML document into Webbrowser to make "Document" a valid HTML document}
WebBrowser.Navigate('about:blank');
{wait until finished loading}
repeat
Application.ProcessMessages;
Sleep(0);
until
WebBrowser.ReadyState = READYSTATE_COMPLETE;
{Get IPersistStreamInit - Interface}
if WebBrowser.Document.QueryInterface(IPersistStreamInit, PersistStreamInit) = S_OK then
begin
{Clear document}
if PersistStreamInit.InitNew = S_OK then
begin
{Make local copy of the contents of Stream if you want to use Stream directly, you have to
consider, that StreamAdapter will destroy it automatically}
MemoryStream:= TMemoryStream.Create;
try
MemoryStream.CopyFrom(Stream, 0);
MemoryStream.Position:= 0;
except
MemoryStream.Free;
raise;
end;
{Use Stream-Adapter to get IStream Interface to our stream}
StreamAdapter:= TStreamAdapter.Create(MemoryStream, soOwned);
{Load data from Stream into WebBrowser}
PersistStreamInit.Load(StreamAdapter);
end;
end;
end;
于是,我就用了下面的代码,吧memo里的html转换成TString,结果出现“Abstract Error”,请问该如何解决?var
tmpStr : TStream;begin
//......
tmpStr := TStream.Create;
mmoTmp.Lines.SaveToStream(tmpStr);
网上找了一段代码:procedure LoadStream(WebBrowser: TWebBrowser; Stream: TStream);
var
PersistStreamInit: IPersistStreamInit;
StreamAdapter: IStream;
MemoryStream: TMemoryStream;
begin
{Load empty HTML document into Webbrowser to make "Document" a valid HTML document}
WebBrowser.Navigate('about:blank');
{wait until finished loading}
repeat
Application.ProcessMessages;
Sleep(0);
until
WebBrowser.ReadyState = READYSTATE_COMPLETE;
{Get IPersistStreamInit - Interface}
if WebBrowser.Document.QueryInterface(IPersistStreamInit, PersistStreamInit) = S_OK then
begin
{Clear document}
if PersistStreamInit.InitNew = S_OK then
begin
{Make local copy of the contents of Stream if you want to use Stream directly, you have to
consider, that StreamAdapter will destroy it automatically}
MemoryStream:= TMemoryStream.Create;
try
MemoryStream.CopyFrom(Stream, 0);
MemoryStream.Position:= 0;
except
MemoryStream.Free;
raise;
end;
{Use Stream-Adapter to get IStream Interface to our stream}
StreamAdapter:= TStreamAdapter.Create(MemoryStream, soOwned);
{Load data from Stream into WebBrowser}
PersistStreamInit.Load(StreamAdapter);
end;
end;
end;
于是,我就用了下面的代码,吧memo里的html转换成TString,结果出现“Abstract Error”,请问该如何解决?var
tmpStr : TStream;begin
//......
tmpStr := TStream.Create;
mmoTmp.Lines.SaveToStream(tmpStr);
解决方案 »
- 安装 DevExpress.ExpressPrinting.System.v3.3.3 问题?
- 求一本关于DELPHI数据库编程的英文电子版书籍~~~~~~~~~~~~~~~~
- Delphi中 这段Insert into 一直出错??
- 程序出错:Corrupt table/index header, 请问什么原因?如何解决?
- 如何将Word内容存放到SQL Server2000中
- Delphi开发类似WEBMAIL程序例子!
- 数据导出为Excel文件,在用户的机器上总是丢数,各位大侠帮忙查查原因。
- 为什么在本机子上打印正常,打包以后在其它机子上出现问题呢?
- access数据导入另一个access数据库, AccessApplication1怎样用?
- 如何在Delphi中实现链表的功能?
- asp能否访问Delphi写得DLL?
- 自定义的子窗体显示不正确呀?
mmoTmp.Lines.SaveToStream(tmpStr);
这句出错的。
var
tmpStr : TMemoryStream;begin
//......
tmpStr := TMemoryStream.Create;
Memo1.Lines.SaveToStream(tmpStr);
end;
如TFileStream\TMemoryStream
var
tmpStr : TMemoryStream;begintmpStr := TMemoryStream.Create;
LoadStream(Webbrowser1,tmpStr);
Memo1.Lines.SaveToStream(tmpStr);
end;
楼主是怎么调用的,我这么调用是错了吧?
Memo1.Lines.SaveToStream(tmpStr);
LoadStream(Webbrowser1,tmpStr);