![]() |
Bestimmte Bereiche aus .txt-Datei auslesen
Hi ich habe mir an folgendem Problem schon den Kopf zerbrochen:
Ich habe eine Textdatei, in der der Quellcode einer Homepage gepeichert ist. Jetzt möchte ich daraus einige Daten auslesen. Ich mache das am Besten mal direkt am Beispiel fest, dann muss ich nicht so viel erklären ;) : So sieht (ein Teil) der allgemein.txt aus: Zitat:
Theoretische Lösungsmöglichkeiten habe ich zwar schon in diversen Threads über die Suche gefunden, allerdings Nichts, was direkt auf meine Situation gepasst hätte oder ich verstehen würde. Ich bekomme es einfach nicht auf die Reihe ihm(=PC ;)) zu verstehen zu geben, dass ich die Zeichen zwischen 2 Positionen ausgegeben haben möchte. Ich bin auch noch nicht so in der Materie drin, dass mir die Onlinehilfe zu "copy" und "pos" weitergeholfen hätte ... Kann mir jemand ein konkretes Beispiel geben wie ich das Problem lösen kann und das am besten Schritt für Schritt erläutern (Ich will's ja schließlich verstehen und nicht nur benutzen)? @sakura: Registriert ;) |
Re: Bestimmt Bereiche aus .txt-Datei auslesen
Weisst du denn in welcher Zeile die Informationen stehen? Dann könntest du einfach den Text nach dem bis zum kopieren. Und dann das gleiche in der nächsten Zeile machen.
Wenn du's nicht weisst, könntest du alle Zeilen durchgehen und nach 'Rang' suchen. Wobei du hier sicherstellen musst, dass es diesen String nicht noch zufälligerweise woanders steht. Und dann in der nächsten Zeile wie oben die Zahl auslesen. zu pos: Was verstehst du denn nicht? :gruebel: Nimm dir mal den String astring:='gggggggghallogggggg'; :coder: und dann schau dir mal das Ergebniss von pos('hallo',astring). Das sollte dir schonmal weiterhelfen. zu copy: astring:='12345679'; und dann mal copy(astring,2,3); :cheers: |
Re: Bestimmt Bereiche aus .txt-Datei auslesen
pos gibt den wert zurück wo das wort anfängt(bei 1 angefangen)
bei tixmans "gggggggghallogggggg" wäre das 9 -----------------123456789 --> pass aber auf groß und kleinschreibung auf.. auf das schaut das Pos nämlich(charwerte...(ASCII)) |
Re: Bestimmt Bereiche aus .txt-Datei auslesen
Vielen Dank schonmal! So langsam klingelt's.
Nochmal kurz die Erklärung in eigenen Worten: copy(astring,9,5) würde bedeuten: Gib mir im astring von Zeichen 9 an die nächsten 5 Zeichen aus ?! zu den zeilen: Wäre möglich, die Zeilen zu zählen, nur bin ich mir nicht sicher in wie fern sich der Quellcode "vor" Punkte noch verändert ... Deshalb erst mal zu der "Suchen-Methode": Also ich hab die .txt jetzt in eine TStringlist geladen (is doch am besten in dem Fall oder), aber wie suche ich jetzt nach "rang" ? Ich hab in den anderen Threads schonmal dazu was gesehen, aber ab der for Schleife versteh ich nicht wirklich was und wie da was passieren soll. Erbarmt sich nochmal jemand mir das zu erklären ? |
Re: Bestimmt Bereiche aus .txt-Datei auslesen
Hier nochmal ein kleiner Code:
Delphi-Quellcode:
var: dat: textfile; i: integer= 0;
assignfile(dat,'C:\Dokumente und Einstellungen\Moon\Desktop\Woisserdenn\text.txt'); reset(dat); while not EOF(dat) do // solange man nicht am 'End Of File' angekommen ist... begin inc(i); readln(dat,str); // Die aktuelle Zeile wird gelesen if pos('Rang',str) <> 0 // Falls 'Rang' nicht drinsteht, wird '0' zurückgegeben then Showmessage('Da ist''s'); end; fileclose(dat); // So jetzt ist's besser |
Re: Bestimmt Bereiche aus .txt-Datei auslesen
Toxman hat fast recht...
Er hat nur in der Eile vergessen die Datei wieder zu schließen.
Delphi-Quellcode:
:zwinker:
fileclose(f);
|
Re: Bestimmt Bereiche aus .txt-Datei auslesen
Nochmal vielen dank, aber ich bekomme da ein paar Fehlermeldungen bei deinem Code:
Delphi-Quellcode:
irgendwie fühl ich mich vom compiler verarscht ...
var dat: textfile;
i: integer; i:=0; // Oben in der Variable wollte er das nicht =0 setzten assignfile(dat,'C:\Dokumente und Einstellungen\Moon\Desktop\Woisserdenn\text.txt'); reset(dat); while not EOF(dat) do begin inc(i); readln(dat,str){Cursorposi}; // << '(' Erwartet, aber ')' gefunden if pos('Rang',str){Cursorposi} <> 0 // << '(' Erwartet, aber ')' gefunden then // << inkompatible Typen Showmessage{Cursor}('Da ist''s'); // Der Ausdruck muss Boolean sein end; fileclose(dat); |
Re: Bestimmt Bereiche aus .txt-Datei auslesen
Zitat:
So far Stephan |
Re: Bestimmt Bereiche aus .txt-Datei auslesen
Edit: Zu früh gefreut...:
Wie bekomme ich das jetzt hin, dass er wenn das Wort "Rang" gefunden hat, dann in der nächsten Zeile erst die Werte ausliest ? Siehe Beispiel.. Edit2: Hab grad mal nachgedacht => Könnte man das nicht mit einer for-Schleife realisieren ? Ich müsste nur ermitteln wieviele Zeilen die txt-Datei und dann einfach von 1 bis "LängeDatei" laufen lassen. Kann das funktionieren ? Ich würd's ja ausprobieren, aber wie ermittle ich die Zeilenanzahl der Datei ? MfG |
Re: Bestimmte Bereiche aus .txt-Datei auslesen
Delphi-Quellcode:
Geht das so in sachen "Programmierstil"? Weil funktionieren tut es schonmal ;)
assignfile('C:\IK\Allgemein.txt')
reset(dat); b:=geszeilen; // gesamt Zeilen hab ich vorher mit ner stringlist und strinlist.count ermittelt for znr:=1 to b do begin ReadLn(dat,astr); if (pos('Rang<',astr) <> 0) then // da Rang ohne Zusatz 3x vorkommt b:=znr+1; if znr=b then begin posRang:=pos('<',astr); Rang:=copy(astr,posRang+23,3); end; end; closefile(dat); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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