![]() |
Text Parsen / Durchsuchen
Hallo,
Ich habe ein Problem und würde mich über Hilfe sehr freuen. In einem memo steht Quelltext folgendes Wiederholt sich :
XML-Code:
usw...
<td><span class="dodo">wert1</span></td>
mehr Quelltext <td><span class="dodo">wert2</span></td> mehr Quelltext <td><span class="dodo">wert3</span></td> Ich möchte jeweils den Wert rausfiltern. Wie kann ich vorgehen? LG Detrox |
Re: Text Parsen / Durchsuchen
Lade es in TWebBrowser und gehe über das HTML-Document (MSHTML.pas) und lass dir das Table-Objekt (IHTMLTable) geben.
Doku gibts bei ![]() |
Re: Text Parsen / Durchsuchen
Hallo und Willkommen in der DP :dp:,
Du könntest mit PosEx nach dem wiederkehrenden Teil suchen ("<td><span class="dodo">"). Dann ab der Fundstelle (plus Stringlänge) bis zur Position von "</span>" kopieren, damit dürftest Du Deinen Wert haben. Eine andere Möglichkeit wären evtl. reguläre Ausdrücke, aber damit kenne ich mich nicht aus. |
Re: Text Parsen / Durchsuchen
Den Webbrowser wollte ich eigentlich vermeiden.
ich lade die html Datei oer idhttp von den indy Komponenten. DeddyH Hi :) könntest du einen Codeansatz posten mit Beschreibug würde mich freuen LG Detrox |
Re: Text Parsen / Durchsuchen
Wenn er einen Wert hat soll er ja weiter runter rutschen und den nächsten Suchen :)
|
Re: Text Parsen / Durchsuchen
Deshalb ja PosEx ;)
|
Re: Text Parsen / Durchsuchen
Zitat:
|
Re: Text Parsen / Durchsuchen
Ich hab jetzt mal im Forum gesucht, ich bekomme es als Anfänger ja hin das erste zu finden und dazwischen auszugeben aber das er danach mit den andern weitermach bekomm ich nich hin, hier mal mein Code:
Delphi-Quellcode:
LGprocedure TForm1.Button1Click(Sender: TObject); var StringList:TStringList; posi:integer; s:string; begin StringList := TStringList.Create; try StringList.Text := Memo1.text ; s:=StringList.Text; delete(s, 1, pos('<td><span class="dodo">', s) + length('<td><span class="dodo">') - 1); Memo2.Text := copy(s, 1, pos('</span></td>', s) - 1); finally StringList.free; end; Detrox |
Re: Text Parsen / Durchsuchen
Und so?
Delphi-Quellcode:
Aber wie Bernhard schon meinte, Kommentare und dergleichen werden dabei nicht berücksichtigt.
function FilterText(const Source, TagStart, TagEnd: string): string;
var StartPos, EndPos: integer; Buffer: TStringList; begin Buffer := TStringList.Create; try StartPos := PosEx(TagStart,Source); while StartPos > 0 do begin inc(StartPos,Length(TagStart)); EndPos := PosEx(TagEnd,Source,StartPos); Buffer.Add(Copy(Source,StartPos,EndPos - StartPos)); StartPos := PosEx(TagStart,Source,EndPos + Length(TagEnd)); end; Result := Buffer.Text; finally Buffer.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Text := FilterText(Memo1.Text,'<span class="dodo">','</span>'); end; |
Re: Text Parsen / Durchsuchen
Toll...
Riesen Dank das funktioniert Super, wenn ich jetzt noch jeden Wert in einer Listbox hätte wäre das die Krönung, aber ich möchte ja nicht unverschämt werden :stupid: LG Detrox |
Re: Text Parsen / Durchsuchen
Alle Werte in einer ListBox oder eine ListBox pro Wert? Ersteres ist nicht so schwer.
|
Re: Text Parsen / Durchsuchen
Ja Pro wert .. hab auch gerade überlegt das würde so nicht gehn weil wir ja alles aufeinmal ausgeben :roll:
LG Detrox |
Re: Text Parsen / Durchsuchen
Hallo,
alle Werte in eine Listbox kriegst du so:
Delphi-Quellcode:
[edit] War wohl doch nicht das was du wolltest
ListBox1.Items.Text := FilterText(Memo1.Text,'<span class="dodo">','</span>');
Ciao Chris |
Re: Text Parsen / Durchsuchen
Ich hab eine Idee, kann ich nicht Zeile für Zeile des Memos in die Listbox übertragen?
|
Re: Text Parsen / Durchsuchen
Was willst Du denn erreichen? Alle Funde in einer Listbox darstellen? Dann hat Chris doch bereits gezeigt, wie das geht.
|
Re: Text Parsen / Durchsuchen
Nein das funktioniert nicht, da wird garnix angezeigt, jedes Listbox Item soll den Wert haben also Listboxitem1 : wert1 usw...
|
Re: Text Parsen / Durchsuchen
Dann musst Du etwas falsch machen, bei mir funktioniert das einwandfrei.
|
Re: Text Parsen / Durchsuchen
Zitat:
|
Re: Text Parsen / Durchsuchen
XML geht nicht? :gruebel: (IXMLDocument und so?)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 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