Hallo Leute
Ich versuche gerade wieder einen Quizbot für einen Chat zu entwickeln, das ist mir bei einem anderen Chat auch mal recht gut gelungen, diesmal gibts jedoch massive Probleme wo ich hin kuck.
In nem anderen Thread wurde mir schon excellent geholfen, um aus dem Chat alle Quellcodes zu kriegen, das ging mit den functionen die ich vorher benutzt habe nämlich nicht mehr.
Jetzt hab ich wieder ein Problem:
Das Chat Formular lässt sich nicht ausfüllen. Sonst ging das immer ganz gut mit
Delphi-Quelltext
1: 2:
| WebBrowser1.OleObject.Document.Frames.item('info').Document.Forms.item(0).Elements.item('message').value :='Richtige Antwort - ' + my_array2[t]; WebBrowser1.OleObject.document.Frames.item('info').Document.Forms.item(0).submit; |
Aber bei diesem Chat funktioniert auch das nicht mehr.
Also hab ich mir von swissdelphiCenter folgenden Code zum ausfüllen von HTML Formularen geholt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| function FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean; var i, j: Integer; FormItem: Variant; begin Result := False; if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then begin Exit; end; for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); for j := 0 to FormItem.Length - 1 do begin try if FormItem.Item(j).Name = FieldName then begin FormItem.Item(j).Value := Value; Result := True; end; except Exit; end; end; end; end; |
der funktioniert bei Seiten ohne Frames auch wunderbar, nur da könnte man den weniger komplizierten Code nehmen den ich als erstes gepostet hab. Für Seiten mit Frames funktioniert der nicht, besonders nicht für den Chat, mit dem ich arbeite. Ich hab dann versucht, den Code umzuschreiben auf Frames:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| function TForm1.FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean; var i, j: Integer; FormItem: Variant; x : string; begin x:= Edit1.Text; for I := 0 to WebBrowser.OleObject.Document.Frames.item(x).Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.Frames.item(x).Document.forms.Item(I); for j := 0 to FormItem.Length - 1 do begin try if FormItem.Item(j).Name = FieldName then begin FormItem.Item(j).Value := Value; Result := True; end; except Exit; end; end; end; end; |
Hat aber nicht wirklich funktioniert, gibt mir ne Fehlermeldung aus bei
Quelltext
1:
| for I := 0 to WebBrowser.OleObject.Document.Frames.item(x).Document.forms.Length - 1 do |
Ich vermute es liegt am Frame name, der ist mir allerdings bekannt.
Weiss vll. jemand einen besseren Weg, um das Formular auszufüllen? Dabei ist wichtig, das keine eizelnen Frames extra geladen ( also praktisch die Seite neu geladen wird ) werden, weil lädt man irgendetwas neu, dann fliegt man aus dem Chat und die UID ändert sich wieder.
Bin dankbar für alle Ratschläge
MfG
CABALxx