1

サイトで注文を処理するソフトウェアを構築しています。DOMを使用してWebサイトをナビゲートしていますが、「間違った」ページでコマンドを使用したときにアプリがハングしないようにしたいと考えています。

元:

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);

編集

タイプライブラリまたはGetElementIDによって返される適切なタイプを見つけることができる他のxmlライブラリを介してmsxmlを使用する代わりにバリアントを使用している場合は、@ GerryCollが言及しているようelement: OLEVariantに、nilの代わりにNULLを使用してチェックできます。ポインタ。

于 2012-06-14T06:10:27.963 に答える