1

我正在构建一个软件来处理网站上的订单。我正在使用 DOM 浏览网站,并且我希望我的应用在“错误”页面上使用命令时不会挂起。

前任:

try
  WebBrowser.OleObject.Document.GetElementByID('ContentPlaceHolder1_txtCommande').setAttribute('value', lblDate.Caption);
except
end;

我想要的只是如果找不到该字段,则忽略该错误,因为此错误并不重要。谢谢!

编辑:当我指的是 DOM 时写了 ADO

4

1 回答 1

5

您自己说可能找不到该元素,那么您期望什么

WebBrowser.OleObject.Document.GetElementByID('ContentPlaceHolder1_txtCommande')

在那种情况下返回nil?然而,您“公然”使用通过附加返回的任何内容

.setAttribute('value', lblDate.Caption);

给它。

将您的代码更改为

var
  element: IDomElement; // Whatever it should really be
begin
  element := WebBrowser.OleObject.Document.GetElementByID('ContentPlaceHolder1_txtCommande');
  if Assigned(element) then
    element.setAttribute('value', lblDate.Caption);

编辑

如果您使用变体而不是通过其类型库或其他一些 xml 库使用变体,您可以在其中找到 GetElementID 返回的正确类型,那么,正如@GerryColl 所提到的,您可以使用element: OLEVariant并检查 NULL 而不是 nil指针。

于 2012-06-14T06:10:27.963 回答