本人初学 delphi, 一个程序调试不过,在倒数第三行的
  webBrowser1.OleObject.Document.body.innerHTML := sHtml;
这一句出现如下错误:
Project HtmlEditor raised exception class EAccessViolation with message 'Access violation at address 004528F8 in module 'HtmlEditor.exe'.Read of address 00000000'.Process stopped.Use Step Or Run to continue.调试就出来看不懂的汇编代码。
本人初学 delphi ,可以说没有任何调试经验,请高手指点一二,谢谢。下面是代码:
unit uMain;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls, ComCtrls;type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    RichEdit1: TRichEdit;
    WebBrowser1: TWebBrowser;
    procedure FormCreate(Sender: TObject);
    procedure TabSheet2Show(Sender: TObject);  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
const
  lf = #10; //换行符
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
  // 设置窗体标题
  caption := '网页编辑器DIY';
  // 初始化 WebBrowser
  WebBrowser1.Navigate('about:blank');
  // 产生网页代码模板
  richEdit1.Text := '<html>' + lf
                + '<head><title></title></head>'
                + lf + '<body>test' + lf + lf
                + '</body>' + lf + '</html>';
end;procedure TForm1.TabSheet2Show(Sender: TObject);
var sHtml: string;
begin  
    sHtml := richEdit1.Text;
    webBrowser1.OleObject.Document.body.innerHTML := sHtml; 
end;
end.

解决方案 »

  1.   

    你把FormCreate里面的事件写到Formshow里面去,我估计就没有这个问题了,你去试一下
      

  2.   

    我测试你的程序
    以下是我测试时用的代码
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, OleCtrls, SHDocVw;type
      TForm1 = class(TForm)
        PageControl1: TPageControl;
        TabSheet1: TTabSheet;
        TabSheet2: TTabSheet;
        WebBrowser1: TWebBrowser;
        RichEdit1: TRichEdit;
        procedure TabSheet2Show(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    const
      lf = #10; //换行符implementation{$R *.dfm}procedure TForm1.TabSheet2Show(Sender: TObject);
    var sHtml: string;
    begin  
        sHtml := richEdit1.Text;
        webBrowser1.OleObject.Document.body.innerHTML := sHtml; 
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
     // 设置窗体标题
      caption := '网页编辑器DIY';
      // 初始化 WebBrowser
      WebBrowser1.Navigate('about:blank');
      // 产生网页代码模板
      richEdit1.Text := '<html>' + lf
                    + '<head><title></title></head>'
                    + lf + '<body>test' + lf + lf
                    + '</body>' + lf + '</html>';end;end.
    和你的一样吧,可我的能运行 调试成功,我就不知道,你的问题是什么了,还是没说清楚啊
      

  3.   

    我的是 delphi 6.0 英文版,你的是什么?是不是和版本有关系?
      

  4.   

    和你的一样,我想应该不是这段程序有问题。你的程序也不是这是这一点吧,也许错误是在你的  webBrowser1.OleObject.Document.body.innerHTML := sHtml; 这句前的一句,你再看看吧!