delphi WebBrowser的关于流载入流保存和流生成


本文整理自网络,侵删。

 

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 判断文件类型函数

Delphi 设计一个有渐变色的标签

Delphi 无法结束进程的程序

Delphi 遍历所有目录和子目录下的文件名(可按后缀名遍历)

Delphi线程池

Delphi 获取系统服务service id

Delphi 使用openjdk进行Delphi android开发

Delphi 取控件下的图象

Delphi 字符串与日期格式互转

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...