【问题标题】:Why do I get an access violation when setting the value of an IHTMLInputTextElement?为什么在设置 IHTMLInputTextElement 的值时会出现访问冲突?
【发布时间】:2011-02-13 12:26:37
【问题描述】:

我收到以下错误:

模块“project1.exe”中地址 0050AA07 的访问冲突。读取地址 00000000。

我正在尝试在 TWebBrowser 中自动填写表单。它只是表单上称为“登录”的字段。

这是什么意思?我该如何解决?

procedure TForm1.Button2Click(Sender: TObject);
var
  doc: IHTMLDocument2;
  frm: IHTMLFormElement;
  fld: IHTMLInputTextElement;
begin
  doc := webbrowser1.Document as IHTMLDocument2;
  frm := doc.forms.item(0, EmptyParam) as IHTMLFormElement;
  fld := frm.item('login', EmptyParam) as IHTMLInputTextElement;
  fld.value := 'someone';
end;

【问题讨论】:

    标签: delphi access-violation ihtmldocument2


    【解决方案1】:

    这意味着您正在取消引用设置为 nil 的指针,并且尝试此非法行为的代码位于您的进程中的 $0050AA07。

    如果你不能解决这个问题,那么如果向我们展示代码,我们可以告诉你为什么你的指针设置为nil。

    【讨论】:

    • 哪一行会引发错误?您可以通过在调试器下运行来辨别这一点。
    • @ployo60 在开始时设置断点,然后使用 F8 单步执行代码,一次执行一行。你真的从来没有使用过调试器吗?这是一项非常重要的学习技能。
    • @ployo60 在该文档的第一种形式中可能没有具有该名称的项目。
    • @ployo60 现在是另一个问题了。我不是 DOM、IHtmlDocument2 等方面的专家。但是,我已经回答了你原来的问题。如果您想问另一个关于为什么 frm.item 返回 nil 的问题,那会很好,但老实说,我相信我已经回答了这个问题。
    • @ployo60 你应该接受你的问题的答案。不仅是这个问题,而且您的其他问题中的所有问题都有一个我认为非常可以接受的答案。我知道您在这里很新,但请阅读常见问题解答。很多人都放弃了时间来帮助你。接受和赞成好的答案是你回报的方式。这样做会鼓励人们在未来回答你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    相关资源
    最近更新 更多