本文整理自网络,侵删。
delphi WebBrowser的关于流载入流保存和流生成
unit unit1;
interface
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, olectrls, shdocvw, stdctrls, extctrls,activex;
type
tform1 = class(tform)
pnl1: tpanel;
btn1: tbutton;
pnl2: tpanel;
wb1: twebbrowser;
pnl3: tpanel;
mmo1: tmemo;
btn2: tbutton;
procedure btn1click(sender: tobject);
procedure btn2click(sender: tobject);
private
{ private declarations }
public
{ public declarations }
end;
var
form1: tform1;
implementation
uses unit2;
{$r *.dfm}
procedure loadstream(webbrowser:twebbrowser; stream:tstream);
var
persiststreaminit: ipersiststreaminit;
streamadapter: istream;
memorystream: tmemorystream;
begin
webbrowser.navigate('about:blank');
repeat
application.processmessages;
sleep(0);
until
webbrowser.readystate=readystate_complete;
if webbrowser.document.queryinterface(ipersiststreaminit,persiststreaminit)=s_ok then
begin
if persiststreaminit.initnew=s_ok then
begin
memorystream:=tmemorystream.create;
try
memorystream.copyfrom(stream,0);
memorystream.position:=0;
except
memorystream.free;
raise;
end;
streamadapter:=tstreamadapter.create(memorystream,soowned);
persiststreaminit.load(streamadapter);
end;
end;
end;
function savehtmlcode(webbrowser:twebbrowser;const filename:tfilename):boolean;
var
ps:ipersiststreaminit;
fs:tfilestream;
sa:istream;
begin
ps:=webbrowser.document as ipersiststreaminit;
fs:=tfilestream.create(filename, fmcreate);
try
sa:=tstreamadapter.create(fs, soreference) as istream;
result:=succeeded(ps.save(sa, true));
finally
fs.free;
end;
end;
//保存成流:
procedure savedocumentsourcetostream(document:idispatch; stream:tstream);
var
persiststreaminit:ipersiststreaminit;
streamadapter:istream;
begin
stream.size:=0;
stream.position:=0;
if document.queryinterface(ipersiststreaminit,persiststreaminit)=s_ok then
begin
streamadapter:=tstreamadapter.create(stream,soreference);
persiststreaminit.save(streamadapter, false);
streamadapter:=nil;
end;
end;
procedure tform1.btn1click(sender: tobject);
var
s: tstringstream;
begin
s:= tstringstream.create(mmo1.text);
try
loadstream(wb1,s);
finally
s.free;
end;
end;
procedure tform1.btn2click(sender: tobject);
begin
savehtmlcode(wb1,'c:\test.htm');
end;
initialization
oleinitialize(nil);
finalization
try
oleuninitialize;
except
end;
end.
相关阅读 >>
Delphi 遍历所有目录和子目录下的文件名(可按后缀名遍历)
Delphi 使用openjdk进行Delphi android开发
更多相关阅读请进入《Delphi》频道 >>