AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWEbbrowser : String im Dokument suchen
Thema durchsuchen
Ansicht
Themen-Optionen

TWEbbrowser : String im Dokument suchen

Ein Thema von FbAi · begonnen am 30. Jan 2004 · letzter Beitrag vom 30. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
FbAi

Registriert seit: 3. Sep 2003
Ort: Essen
33 Beiträge
 
#1

TWEbbrowser : String im Dokument suchen

  Alt 30. Jan 2004, 09:23
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:
logbook.Log(ltStep,code.Lines.Text); liegt das an dem Memo-feld ???

Wer kann helfen das Problem zu lösen ??
Not a Mistake - just a little happy exident !
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#2

Re: TWEbbrowser : String im Dokument suchen

  Alt 30. Jan 2004, 09:50
Zitat von FbAi:
Ausserdem gibt es immer einen Fehler beim ausführen des Programms bei dieser Zeile:
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
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
FbAi

Registriert seit: 3. Sep 2003
Ort: Essen
33 Beiträge
 
#3

Re: TWEbbrowser : String im Dokument suchen

  Alt 30. Jan 2004, 09:58
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#4

Re: TWEbbrowser : String im Dokument suchen

  Alt 30. Jan 2004, 10:07
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
FbAi

Registriert seit: 3. Sep 2003
Ort: Essen
33 Beiträge
 
#5

Re: TWEbbrowser : String im Dokument suchen

  Alt 30. Jan 2004, 10:30
mit TStrings hab ich das auch schon probiert nur es kommt der gleiche Fehler
nur mit ner anderen adresse versteht sich
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#6

Re: TWEbbrowser : String im Dokument suchen

  Alt 30. Jan 2004, 10:45
Auch bei einem TStrings gilt:

auf jeden Fall vorher ein 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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
FbAi

Registriert seit: 3. Sep 2003
Ort: Essen
33 Beiträge
 
#7

Re: TWEbbrowser : String im Dokument suchen

  Alt 30. Jan 2004, 10:54
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 !
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#8

Re: TWEbbrowser : String im Dokument suchen

  Alt 30. Jan 2004, 10:55
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).
gruß, choose
  Mit Zitat antworten Zitat
FbAi

Registriert seit: 3. Sep 2003
Ort: Essen
33 Beiträge
 
#9

Re: TWEbbrowser : String im Dokument suchen

  Alt 30. Jan 2004, 10:58
danke habs jetzt !
Uff
jetzt brauch ich nurnoch den regulären ausdruck um das wort 'Keine' in dem text zu finden!

Danke schonmal =)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#10

Re: TWEbbrowser : String im Dokument suchen

  Alt 30. Jan 2004, 11:00
Choose: Da hste recht.

Naja... auf jeden Fall muss das Objekt erst erzeugt werden.
Von mir aus auch ein Stream, hauptsache created
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz