Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWEbbrowser : String im Dokument suchen (https://www.delphipraxis.net/15518-twebbrowser-string-im-dokument-suchen.html)

FbAi 30. Jan 2004 09:23


TWEbbrowser : String im Dokument suchen
 
hi leute.
Ich möchte gerne in einem Dokument des TWebbrowsers nach einem bestimmte String suchen.
Ich habe daszu folgendes geschrieben:
Delphi-Quellcode:
  code.Text := browser.OleObject.Document.body.OuterHTML;
  RegCheck.Expression := '([_a-zA-Z\d\-\.]{5,10})';
  if RegCheck.Exec(code.Text) then begin
    logbook.Log(ltStep,'Ergebniss enthalten');
  end else
    logbook.Log(ltError,'Ergebniss nicht enthalten');
  logbook.Log(ltStep,code.Lines.Text);
code : TMemo;
logbook : TStringLogger;
log : TMemo;
RegCheck : TRegExpr;

um die Komponenten TStringlistLogger und TRegExpr brauchen wir uns nicht kümmern,
der Logger schrreibt eben nur eine Zeile in ein Memo-Objekt
und TRegExpr ist eine Komponente um reguläre Ausdrücke zu überprüfen.

Das Problem ist jetzt, dass anscheinend irgendwas mitcode nicht stimmt,
da das ergebniss der Überprüfung immer negativ ausfällt;
wenn ich aber den html-code in das Memo-Objekt log packe dann funktioniert alles.
Der unterschied zwischen den beiden dass das Memo-Objekt log auf der Form ist

und ich das Memo-Objekt code einfach in die private deklaration geschrieben habe:
code : TMemo;

ist das nicht möglich ???

Ausserdem gibt es immer einen Fehler beim ausführen des Programms bei dieser Zeile:
Delphi-Quellcode:
logbook.Log(ltStep,code.Lines.Text);
liegt das an dem Memo-feld ???

Wer kann helfen das Problem zu lösen ??

Phoenix 30. Jan 2004 09:50

Re: TWEbbrowser : String im Dokument suchen
 
Zitat:

Zitat von FbAi
Ausserdem gibt es immer einen Fehler beim ausführen des Programms bei dieser Zeile:
Delphi-Quellcode:
logbook.Log(ltStep,code.Lines.Text);
liegt das an dem Memo-feld ???

Also Lines.Text gibt den kompletten Inhalt des Memos zurück. Vielleicht kommt Dein Logbook damit nicht so ganz klar?

Zum suchen:
hast Du vielleicht "Code" gar nicht instanziert?
Dann dürfte zwar schon die Zuweisung nicht funktionieren, aber ab und zu klappt sowas mal, man kann aber dennoch nicht drauf zu greifen.

Das würde auch erklären, warum Du beim Zugriff auf code.Lines.Text unten einen fehler bekommst.

Edit:

PS: Ein wenig mehr info von wegen WAS für ein Fehler kommt wäre nicht schlecht ;-)

FbAi 30. Jan 2004 09:58

Re: TWEbbrowser : String im Dokument suchen
 
was meinst du mit instanziert ???
in der prvat-deklaration der form steht halt code : TMemo;
und dann greife ich darauf zu ( code.text := browser... )

Fehler ist dieser Hier:
... EAcessVialation ... Zugriffsverletzung bei Adresse 0064224A in Modul browser.exe LEsen von ADresse 0000... Prozess wird angehalten.

sowas halt.
Hatte sowas einen Fehler schonmal als ein Objekt freigegeben werden sollte das nicht da war.
hat das was damit zu tun ?

Phoenix 30. Jan 2004 10:07

Re: TWEbbrowser : String im Dokument suchen
 
Zitat:

Zitat von FbAi
Hatte sowas einen Fehler schonmal als ein Objekt freigegeben werden sollte das nicht da war.
hat das was damit zu tun ?

Genau das gleiche ;-)

Delphi-Quellcode:
code: TMemo; // deklariert eine Variable vom Typ TMemo
             // das TMemo gibt es aber noch nicht, es hat nur schon Platz wenn es kommt
Probier mal folgendes:
Delphi-Quellcode:
  code := TMemo.Create(self); // Objekt erzeugen
  code.Text := browser.OleObject.Document.body.OuterHTML; // danach drauf arbeiten

  // hier dann weitermachen
  //...
  //

  // und am Ende nicht vergessen:
  FreeAndNil(code); // speicher wieder freigeben

Edit:

PS: Brauchst Du überhaupt für den Code ein TMemo, wenn Du eh nichts anzeigen willst, oder brauchst Du nur ein Objekt, das Dir nur den Text bzw. html-Quellcode vorhält?

In letzterem Fall würde ich das TMemo gegen ein TStrings austauschen, denn: TMemo.Lines ist ein TSTrings, d.H. wenn Du bei Code eh immer ausschliesslich nur auf Lines arbeitest wäre es geschickte, gleich ein TStrings - Objekt zu nehmen.

FbAi 30. Jan 2004 10:30

Re: TWEbbrowser : String im Dokument suchen
 
mit TStrings hab ich das auch schon probiert nur es kommt der gleiche Fehler
nur mit ner anderen adresse versteht sich

Phoenix 30. Jan 2004 10:45

Re: TWEbbrowser : String im Dokument suchen
 
Auch bei einem TStrings gilt:

auf jeden Fall vorher ein
Delphi-Quellcode:
code := TStrings.Create(self);
aufrufen.

Ohne Create kein Objekt.

Deine Variable 'code' ist am Anfang nur eine Speicheradresse, und die ist am Anfang noch leer bzw. hat einen zufälligen Wert. Willst Du nun auf code.irgendwas zugreifen, wird geguckt, auf welches Objekt 'code' denn nun zeigt, springt an die Adresse und holt Dir das .irgendwas her.

An der zufälligen Speicheradresse gibt es aber nocht kein TStrings und erst recht kein .irgendwas da drauf.

Erst wenn Du ein TStrings.Create() aufrufst, wird das Objekt (und sein .irgendwas) angelegt, und in Deine Variable 'code' wird reingeschrieben, WO denn nun das Objekt liegt. Erst danach kannst Du überhaupt auf Deinem 'code' arbeiten, egal ob das nun ein TMemo oder ein TStrings ist.

FbAi 30. Jan 2004 10:54

Re: TWEbbrowser : String im Dokument suchen
 
hatte ich auch schon ausprobiert und habs jetzt halt nochmal gemacht:
eAbstractError ... 'Abstrakter Fehler' der Prozess wurde angehalten !!!

Das dingen dient ja nur dazu den html code nicht-visuell festzuhalten um ihn mit den regulären ausdrücken zu vergleichen !

choose 30. Jan 2004 10:55

Re: TWEbbrowser : String im Dokument suchen
 
Hallo Phoenix,

bei TStrings handelt es sich um eine abstrakte Basisklasse, von ihr sollten keine Exemplare erzeugt werden. Stattdessen sollte ein Erbe (zB TStringList) in der Form
Delphi-Quellcode:
var
  myStrings: TStrings;
begin
  myStrings:= TStringList.Create;
verwendet werden (andernfalls wirst Du bei der Verwendung div Methoden entsprechende Fehler bekommen).

FbAi 30. Jan 2004 10:58

Re: TWEbbrowser : String im Dokument suchen
 
danke habs jetzt !
Uff
jetzt brauch ich nurnoch den regulären ausdruck um das wort 'Keine' in dem text zu finden!

Danke schonmal =)

Phoenix 30. Jan 2004 11:00

Re: TWEbbrowser : String im Dokument suchen
 
Choose: Da hste recht. :oops:

Naja... auf jeden Fall muss das Objekt erst erzeugt werden.
Von mir aus auch ein Stream, hauptsache created ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 Uhr.
Seite 1 von 2  1 2      

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