Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebBrowser (https://www.delphipraxis.net/75772-twebbrowser.html)

The Madcat 24. Aug 2006 19:42


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:
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;
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 ...

[schnipp]...[schnapp]
Seitdem hab ich nur noch einen gedanken ... :wiejetzt: --> :coder2:

Bitte helft mir :(

mkinzler 24. Aug 2006 19:47

Re: TWebBrowser
 
Zitat:

seitdem kommt diese nerfige accesviolation und ich hab keinen schimmer warum ...
Was für eine?
Zitat:

die beiden values aus dem html-text ausgelesen und in wert1 und wert2 gespeichert ...
Villeicht könntest du das mal zeigen

The Madcat 24. Aug 2006 20:04

Re: TWebBrowser
 
Zitat:

Zitat:

seitdem kommt diese nerfige accesviolation und ich hab keinen schimmer warum ...
Was für eine?
Die von dem Screenshot in meinem thread

Zitat:

Zitat:

die beiden values aus dem html-text ausgelesen und in wert1 und wert2 gespeichert ...
Villeicht könntest du das mal zeigen
Ich bin mir sicher, dass die werte richtig sind, ich sie zum einem mit bloßem auge überprüft hab und weil ich zum test

Delphi-Quellcode:
if (wert1 = 'der wert aus der html') and (wert1 = 'der wert aus der html') then login;
eingebaut hab und er es genommen hat.

mkinzler 24. Aug 2006 20:17

Re: TWebBrowser
 
Zitat:

Die von dem Screenshot in meinem thread
Welcher Screenshot? Hänge ihn mal an.
Was liest du wie aus? Ohne Code kann dir hier niemand helfen!

The Madcat 24. Aug 2006 20:29

Re: TWebBrowser
 
den code der nicht funktioniert hab ich gepostet. Die Fehlermeldung kommt immer

Delphi-Quellcode:
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;
an der mit --><-- gekennzeichneten Stelle.

Screenshot ist nicht angehängt sondern mit [img][/img] in meinen ersten thread eingebaut.
Hier die URL, falls er nicht angezeigt wird

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^^

mkinzler 24. Aug 2006 20:34

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?

The Madcat 24. Aug 2006 20:38

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:
WebBrowser1.OleObject.document.Forms.item('name').elements.item('blabla').Value := lspieler;
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.

The Madcat 24. Aug 2006 20:43

Re: TWebBrowser
 
Darüber lese ich die beiden werte aus

Delphi-Quellcode:
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;
Ich gebe zu, es ist weder elegant noch einfach, aber es tut seinen dienst.

mkinzler 24. Aug 2006 20:44

Re: TWebBrowser
 
Hast du schon mal versucht die Variablen anders zu deklarieren (z.B. OleVariant)

The Madcat 24. Aug 2006 20:45

Re: TWebBrowser
 
moment, probier ich gleich mal aus^^

The Madcat 24. Aug 2006 20:51

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:

replica 7. Sep 2006 19:01

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