PWert ist nicht zwingend mit einem sinnvollen Wert befüllt.
Bei Button1 wird PWert erst nach dem Webbrowser1.Navigate befüllt, hat also vorher ggfls. einen undefinierten Wert (irgendein Integer).
Gib hier bitte mal FieldName mit aus, damit man weiß, bei welchem Feld der Fehler auftritt.
Delphi-Quellcode:
except
on E:
Exception do
ShowMessage('
Fehler vom Typ: ' + E.ClassName + '
, Meldung: ' + E.
Message + '
, Feld: ' + FieldName);
end;
Mir ist der Fehler nur bei Offenes-Presseportal.de ca. 46 mal um die Ohren gehauen worden. Auf der Seite scheinen alle Eingabefelder... innerhalb von FieldSets zu stehen. Es kann sein, dass das FillForm dafür nicht geeignet ist, da die Eingabefelder nicht direkt im Form liegen, sondern in FieldSets.
Die Seite von Fair-News.de enthält mehrere Formulare. Welches dieser Formulare erwischst Du denn mit Deinem Programm?
Buttons sind auch Felder in einem Formular, sie haben aber nicht zwingend einen Namen. Damit kann FormItem.Item(j).Name leer sein. Hier könntest Du mal probieren, ob eine Abfrage mit EmptyVar funktioniert.
Weiß nicht, ob sowas funktionieren könnte:
Delphi-Quellcode:
if Not (FormItem.Item(j).Name = EmptyVar)
and (FormItem.Item(j).Name = FieldName) then
begin
FormItem.Item(j).Value := Value;
Result := True;
end;
Dashier ist äußerst ungeschickt:
Damit ignorierst Du Deine Fehler und verlierst die Fehlermeldung.
Da Du den Rückgabewert von FillForm nie benutzt, könntest Du diesen auf String ändern und dann die Fehlermeldung zurückgeben.
Delphi-Quellcode:
function FillForm(WebBrowser: TWebBrowser; FieldName:
string; Value:
string):
String;
var
i, j: Integer;
FormItem: Variant;
begin
Result := '
setze ' + FieldName + '
=' + Value;
...
Except
on E:
Exception do
Result := Result + #13 + '
Fehler vom Typ: ' + E.ClassName + '
, Meldung: ' + E.
Message + '
Feld: ' + FieldName;
ShowMessage(Result);
end;
end;
Dann spendierst Du dem Programm noch ein Memofeld (unterhalb der Buttons?) und gibst dort den Rückgabewert von FillForm aus.
Delphi-Quellcode:
MemoLog.Lines.Clear;
MemoLog.Lines.Add(FillForm(WebBrowser1, 'homepage', 'http://www.swissdelphicenter.ch'));
...
In der endgültigen Programmversion kannst Du das Memo dann unsichtbar machen.
Alternativ kannst Du die Fehler auch in eine LOG-Datei schreiben.