需要用SafeArray,范例:var Document1: IHtmlDocument2; v:oleVariant; begin wb.Navigate('about:blank'); Document1 := wb.Document as IHtmlDocument2; if (Assigned(Document1)) then begin v := VarArrayCreate([0, 0], varVariant); v[0] := '<html>.............</html>'; Document1.Write(PSafeArray(TVarData(v).VArray)); Document1.Close; end; end;
to TechnoFantasy(www.applevb.com): IHtmlDocument2是哪个单元的,是不是要加个接口?? 是不是把流存到safeArray里,Document1.Read(...) 然后 navigate(what???)[email protected]多联系
var ls: TStrings; Html: IHtmlDocument2; begin ls := TStringList.Create; ls.LoadFromStream(YourStream); Html.Body.innerHtml := ls.Text; ls.Free; end;
to alldog(芸芸众生) 要Use MSHTML
to cgxp(宁采臣): 不行呀?? Html.Body.innerHtml := ls.Text; Abstract Error!!to TechnoFantasy(www.applevb.com): 怎么把流中的文档逐行存进SafeArray里呢?
我这么写总是出错,为什么??? unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw,activex,mshtml;type TForm1 = class(TForm) WebBrowser1: TWebBrowser; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure ShowHtml(Browser:TWebBrowser;content:string); end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.ShowHtml(Browser:TWebBrowser;content: string); var vv: Variant; HTMLDocument: IHTMLDocument2; begin vv := VarArrayCreate([0,0],varVariant); vv[0] := content; HTMLDocument := browser.Document as IHTMLDocument2; HTMLDocument.write(PSafeArray(TVarData(vv).VArray)); HTMLDocument.charset := 'gb2312'; HTMLDocument.close; end;procedure TForm1.Button1Click(Sender: TObject); begin ShowHtml(WebBrowser1,'<html><head></head><body>ff</body><html>'); end;end.
HTMLDocument := browser.Document as IHTMLDocument2;中的bowser改成你用的webbrowser1
to alldog(芸芸众生) 这使用过程ShowHtml做的 我调用ShowHtml(WebBrowser1,'<html><head></head><body>ff</body><html>'); 程序编译通过,就是出现一个错误!! Access violation at address 004548D5 in module 'PROJECT.exe' Read of address FFFFFFFF.
Document1: IHtmlDocument2;
v:oleVariant;
begin
wb.Navigate('about:blank');
Document1 := wb.Document as IHtmlDocument2;
if (Assigned(Document1)) then begin
v := VarArrayCreate([0, 0], varVariant);
v[0] := '<html>.............</html>';
Document1.Write(PSafeArray(TVarData(v).VArray));
Document1.Close;
end;
end;
IHtmlDocument2是哪个单元的,是不是要加个接口??
是不是把流存到safeArray里,Document1.Read(...)
然后 navigate(what???)[email protected]多联系
ls: TStrings;
Html: IHtmlDocument2;
begin
ls := TStringList.Create;
ls.LoadFromStream(YourStream);
Html.Body.innerHtml := ls.Text;
ls.Free;
end;
要Use MSHTML
不行呀??
Html.Body.innerHtml := ls.Text; Abstract Error!!to TechnoFantasy(www.applevb.com):
怎么把流中的文档逐行存进SafeArray里呢?
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, SHDocVw,activex,mshtml;type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure ShowHtml(Browser:TWebBrowser;content:string);
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.ShowHtml(Browser:TWebBrowser;content: string);
var
vv: Variant;
HTMLDocument: IHTMLDocument2;
begin
vv := VarArrayCreate([0,0],varVariant);
vv[0] := content;
HTMLDocument := browser.Document as IHTMLDocument2;
HTMLDocument.write(PSafeArray(TVarData(vv).VArray));
HTMLDocument.charset := 'gb2312';
HTMLDocument.close;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
ShowHtml(WebBrowser1,'<html><head></head><body>ff</body><html>');
end;end.
http://www.csdn.net/Expert/topic/446/446813.shtm
这使用过程ShowHtml做的
我调用ShowHtml(WebBrowser1,'<html><head></head><body>ff</body><html>');
程序编译通过,就是出现一个错误!!
Access violation at address 004548D5 in module 'PROJECT.exe' Read of address FFFFFFFF.