![]() |
Mit readln nur bestimmte Textstelle auslesen
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:
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?
var s : string; f : textfile;
repeat readln(f,s); Memo1.Lines.Add(s); Until eof (f); Habe das Forum schon einmal durchsucht, aber bislang nichts zu diesem Thema gefunden ... Danke euch schonmal im voraus ... Gruß HC |
AW: Mit readln nur bestimmte Textstelle auslesen
Hier hast du eine weitere Abbruchbedingung:
Lass die Schleife doch dann beenden, wenn die Zeile "H1" beinhaltet. Das kannst du mit Pos() prüfen. |
AW: Mit readln nur bestimmte Textstelle auslesen
Wäre es nicht einfacher, die (X)HTML-Datei mit Hilfe eines XML-Parsers zu durchsuchen? :gruebel:
|
AW: Mit readln nur bestimmte Textstelle auslesen
Zitat:
|
AW: Mit readln nur bestimmte Textstelle auslesen
Zitat:
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. |
AW: Mit readln nur bestimmte Textstelle auslesen
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 |
AW: Mit readln nur bestimmte Textstelle auslesen
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 ... |
AW: Mit readln nur bestimmte Textstelle auslesen
|
AW: Mit readln nur bestimmte Textstelle auslesen
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 ... |
AW: Mit readln nur bestimmte Textstelle auslesen
Du ermittelst mit Pos die Position des Tags (also H1 in Deinem Fall). Nun gehst Du mit
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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