![]() |
TWebBrowser
Ich hab folgendes Problem:
Ich wollte mir einen autologin für eine hp basteln und hab dafür folgenden code benutzt:
Delphi-Quellcode:
var
lspieler, lpasswort, wert1, wert2 : string;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin WebBrowser1.Navigate('www.blabla.de/login.php'); ... end;
Delphi-Quellcode:
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: olevariant); begin Form1.Login; end;
Delphi-Quellcode:
Zuerst habe ich anstatt der Strings wert1 und wert2 die values genau wie beim Form eingegeben und es klappte wunderbar ... bis ich bemerkt hab, dass sich die werte jeden tag ändern ... die mögen wohl kein autologin ... da ich aber der meinung bin, das ein autologin nichts böses ist und das programm auch nicht wirklich was anderes machen sollte hab ich vorher über eine prozedure mit sehr vielen schleifen (die ich an dieser stelle niemanden zumuten möchte, da die werte die sie ausspuckt stimmen) die beiden values aus dem html-text ausgelesen und in wert1 und wert2 gespeichert ... seitdem kommt diese nerfige accesviolation und ich hab keinen schimmer warum ...
procedure TForm1.Login;
begin try WebBrowser1.OleObject.document.Forms.item('name').elements.item(wert1).Value := lspieler; WebBrowser1.OleObject.document.Forms.item('name').elements.item(wert2).Value := lpasswort; WebBrowser1.OleObject.Document.Forms.Item('name').Submit('login'); except ShowMessage('Fehler beim Login'); end; end; [schnipp]...[schnapp] Seitdem hab ich nur noch einen gedanken ... :wiejetzt: --> :coder2: Bitte helft mir :( |
Re: TWebBrowser
Zitat:
Zitat:
|
Re: TWebBrowser
Zitat:
Zitat:
Delphi-Quellcode:
eingebaut hab und er es genommen hat.
if (wert1 = 'der wert aus der html') and (wert1 = 'der wert aus der html') then login;
|
Re: TWebBrowser
Zitat:
Was liest du wie aus? Ohne Code kann dir hier niemand helfen! |
Re: TWebBrowser
den code der nicht funktioniert hab ich gepostet. Die Fehlermeldung kommt immer
Delphi-Quellcode:
an der mit --><-- gekennzeichneten Stelle.
procedure TForm1.Login;
begin try --> WebBrowser1.OleObject.document.Forms.item('name').elements.item(wert1).Value := lspieler; <-- WebBrowser1.OleObject.document.Forms.item('name').elements.item(wert2).Value := lpasswort; WebBrowser1.OleObject.Document.Forms.Item('name').Submit('login'); except ShowMessage('Fehler beim Login'); end; end; Screenshot ist nicht angehängt sondern mit [img][/img] in meinen ersten thread eingebaut. Hier die ![]() die andere procedure ist im prinzip ne große schleife, die mit copy() die teile aus nem memo, in das ist den html code gelade hab, rausholt, Die funktioniert wirklich, soviel traue ich mir noch zu^^ |
Re: TWebBrowser
Read from Adress 00000000... deutet meißtens darauf hin, daß auf eine nicht initialisierte Objektvariable zugegriffen wird.
Welche Werte haben Wert1 und Wert2? |
Re: TWebBrowser
Das kommt darauf an, was aus dem htmlcode ausgelesen wurde.
Das ist ja, was ich nicht verstehe, ich hab bei meinem 1. versuch für den autoeinlogger die beiden werte über
Delphi-Quellcode:
eingegeben und er hat sie ohne kommentar mit der gleichen Loginprocedure genommen und die seite ausgeführt. Dann hab ich bemerkt, dass sich die werte ändern und hab die aus der html ausgelesen, um drauf zugreifen zu können und die beiden statischen werte durch meine wert1 und wert2 ausgetauscht. Danach kam die accessviolation. der witz ist aber, dass wenn ich die beiden werte ausgebe, kopiere und wieder statisch eingebe der kein problem mehr damit hat.
WebBrowser1.OleObject.document.Forms.item('name').elements.item('blabla').Value := lspieler;
|
Re: TWebBrowser
Darüber lese ich die beiden werte aus
Delphi-Quellcode:
Ich gebe zu, es ist weder elegant noch einfach, aber es tut seinen dienst.
procedure TForm1.LocateValue;
var c1, c2, c3 : integer; begin for c1 := 0 to memo2.Lines.Count - 1 do begin if copy(memo2.Lines.Strings[c1], 0, 14) = '...' then begin for c2 := c1 to memo2.Lines.Count do begin if copy(memo2.Lines.Strings[c2], 0, 24) = '...' then begin c3 := 68; if copy(memo2.Lines.Strings[c2], 63, 6) = '...' then begin c3 := 69; while (memo2.Lines.Strings[c2][c3] <> '=') or (c3 = length(memo2.Lines.Strings[c2]) - 1) do Inc(c3); c3 := c3 + 1; end; while (memo2.Lines.Strings[c2][c3] <> '>') or (c3 = length(memo2.Lines.Strings[c2]) - 1) do begin wert1 := wert1 + memo2.Lines.Strings[c2][c3]; Inc(c3); end; end; end; end; if copy(memo2.Lines.Strings[c1], 0, 14) = '...' then begin for c2 := c1 to memo2.Lines.Count do begin if copy(memo2.Lines.Strings[c2], 0, 28) = '...' then begin c3 := 95; while (memo2.Lines.Strings[c2][c3] <> '>') or (c3 = length(memo2.Lines.Strings[c2]) - 1) do begin wert2 := wert2 + memo2.Lines.Strings[c2][c3]; Inc(c3); end; end; end; end; end; showmessage(wert1+','+wert2); end; |
Re: TWebBrowser
Hast du schon mal versucht die Variablen anders zu deklarieren (z.B. OleVariant)
|
Re: TWebBrowser
moment, probier ich gleich mal aus^^
|
Re: TWebBrowser
DANKE :bounce1:
dass man da aber auch nciht selbst draufkommt ... :wall: PS: ich dachte einfach, wenn es sich über `...` deklarieren lässt reicht ein string :roteyes: |
Re: TWebBrowser
Hi ihr!
Habe so etwas ähnliches vor, wie Madcat, und habe auch diesen Fehler mit der AccessViolation. Wo soll man da die Deklaration ändern, ich verstehe das nicht. Sorry, bin ein voll-noob ;) greetz /edit: ok, ich hab das auf einem anderen weg umgangen, und der fehler ist weg. trotzdem vielen dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz