AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Mit readln nur bestimmte Textstelle auslesen

Mit readln nur bestimmte Textstelle auslesen

Ein Thema von hamptoncourt · begonnen am 6. Jan 2011 · letzter Beitrag vom 6. Jan 2011
Antwort Antwort
Seite 1 von 2  1 2   
hamptoncourt

Registriert seit: 20. Nov 2010
34 Beiträge
 
#1

Mit readln nur bestimmte Textstelle auslesen

  Alt 6. Jan 2011, 15:53
Hallo Leute, ich habe mal wieder ein Problem :-/ ...

Ich möchte eine TXT-Datei einlesen, die einen Quellcode einer Homepage beinhaltet. In einem Meofeld sollen nur die Überschriften der Themen ausgegeben werden. Ich lese die Datei als Zeile für Zeile mit readln ein.
Er soll die Zeilen quasi solange lesen, bis er den Text "H1" findet. Dann springt er zu dem Text, der sich zwischen einem größer- und einem kleiner-Zeichen befindet ( also: >auszugebener Text<). Diesen soll er dann in das Memo-Feld eintragen ...

Ich dachte, ich könnte das mit diesem Ansatz lösen:

Delphi-Quellcode:
var s : string; f : textfile;

repeat
readln(f,s);
Memo1.Lines.Add(s);
Until eof (f);
Hierbei gibt er natürlich einfach das komplette Dokument in dem Memo-Feld aus ... wie kann ich also den Bereich spezifizieren, der für mich interessant ist?

Habe das Forum schon einmal durchsucht, aber bislang nichts zu diesem Thema gefunden ...

Danke euch schonmal im voraus ...

Gruß
HC
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Mit readln nur bestimmte Textstelle auslesen

  Alt 6. Jan 2011, 15:58
Hier hast du eine weitere Abbruchbedingung:

Lass die Schleife doch dann beenden, wenn die Zeile "H1" beinhaltet.
Das kannst du mit Pos() prüfen.
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Mit readln nur bestimmte Textstelle auslesen

  Alt 6. Jan 2011, 16:11
Wäre es nicht einfacher, die (X)HTML-Datei mit Hilfe eines XML-Parsers zu durchsuchen?
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Mit readln nur bestimmte Textstelle auslesen

  Alt 6. Jan 2011, 16:14
Wäre es nicht einfacher, die (X)HTML-Datei mit Hilfe eines XML-Parsers zu durchsuchen?
Also wenn dann wohl einen spezialisierten HTML-Parser, sonst wirst du Probleme mit <br> usw. kriegen, falls es kein echtes XHTML ist ...
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Mit readln nur bestimmte Textstelle auslesen

  Alt 6. Jan 2011, 16:17
die einen Quellcode einer Homepage beinhaltet
Dann solltest du einen HTML-Parser benützen.
Es wird zwar immer wieder versucht HTML mit Standard Stringfunktionen wie Copy, Pos und Delete zu verarbeiten, aber sobald die Seite etwas komplexer wird ist das zum Scheitern verurteilt.
Es ist ungefähr so, als wollte man einen PKW-Motor nur mit einem Schraubenzieher bewaffnet ausbauen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Mit readln nur bestimmte Textstelle auslesen

  Alt 6. Jan 2011, 16:24
Einspruch Euer Ehren, wenn es wirklich nur um 3 oder 4 Zeilen, die ganz klar identifizierbar sind, geht, ist ein Parser nur Overkill.

Ich würde allerdings TStringlist verwenden, da, wenn ich mich recht erinnere, readln nur mit shortstrings umgehen kann.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hamptoncourt

Registriert seit: 20. Nov 2010
34 Beiträge
 
#7

AW: Mit readln nur bestimmte Textstelle auslesen

  Alt 6. Jan 2011, 16:30
Ja, vielleicht, wir sollen das allerdings für die Uni auf diese Weise lösen ...

Mit Pos()???? Wie mache ich das??? Das Prinzip kenne ich noch gar nicht ...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.367 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Mit readln nur bestimmte Textstelle auslesen

  Alt 6. Jan 2011, 16:33
Delphi-Referenz durchsuchenPos
Ist das denn so schwer?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hamptoncourt

Registriert seit: 20. Nov 2010
34 Beiträge
 
#9

AW: Mit readln nur bestimmte Textstelle auslesen

  Alt 6. Jan 2011, 21:40
Naja, für jemanden, für den das noch neuland ist, ist es schon etwas komplizierter *lol*

Ich denke, ich verstehe, wie das mit dem TStringList und dem Pos() funktionieren soll. Aber irgendwie ist mir nicht klar, wie ich die Anweisung geben kann, dass er in der Zeile mit H1 weiter ließt bis zum >-Zeichen und dann den Text ein ließt ...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.367 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Mit readln nur bestimmte Textstelle auslesen

  Alt 6. Jan 2011, 21:46
Du ermittelst mit Pos die Position des Tags (also H1 in Deinem Fall). Nun gehst Du mit Delphi-Referenz durchsuchenPosEx zum nächsten schließenden Tag und ermittelst wieder mit PosEx die Position des nächsten öffnenden. Alles dazwischen kopierst Du nun.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf