AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Bestimmte Bereiche aus .txt-Datei auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Bestimmte Bereiche aus .txt-Datei auslesen

Offene Frage von "Moon"
Ein Thema von Moon · begonnen am 10. Jun 2004 · letzter Beitrag vom 11. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2      
Moon

Registriert seit: 10. Jun 2004
9 Beiträge
 
#1

Bestimmte Bereiche aus .txt-Datei auslesen

  Alt 10. Jun 2004, 16:46
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:
...
<TD bgColor=#f0f0f0>Punkte[/b][/B]</TD>
<TD bgColor=#f0f0f0>45842</TD></TR>
<TR>
<TD bgColor=#f0f0f0>Rang</TD>
<TD bgColor=#f0f0f0>477</TD></TR>
<TR>
<TD vAlign=top bgColor=#f0f0f0>Inseln (49)</TD>
...
Die jeweils fettgedruckten Daten bräuchte ich...
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
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Bestimmt Bereiche aus .txt-Datei auslesen

  Alt 10. Jun 2004, 17:37
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?
Nimm dir mal den String astring:='gggggggghallogggggg'; 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);
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Bestimmt Bereiche aus .txt-Datei auslesen

  Alt 10. Jun 2004, 17:47
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))
Nico Müller
  Mit Zitat antworten Zitat
Moon

Registriert seit: 10. Jun 2004
9 Beiträge
 
#4

Re: Bestimmt Bereiche aus .txt-Datei auslesen

  Alt 10. Jun 2004, 18:10
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Bestimmt Bereiche aus .txt-Datei auslesen

  Alt 10. Jun 2004, 21:34
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
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Bestimmt Bereiche aus .txt-Datei auslesen

  Alt 10. Jun 2004, 23:44
Toxman hat fast recht...
Er hat nur in der Eile vergessen die Datei wieder zu schließen.

fileclose(f);
Thomas
  Mit Zitat antworten Zitat
Moon

Registriert seit: 10. Jun 2004
9 Beiträge
 
#7

Re: Bestimmt Bereiche aus .txt-Datei auslesen

  Alt 11. Jun 2004, 11:27
Nochmal vielen dank, aber ich bekomme da ein paar Fehlermeldungen bei deinem Code:

Delphi-Quellcode:
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);
irgendwie fühl ich mich vom compiler verarscht ...
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#8

Re: Bestimmt Bereiche aus .txt-Datei auslesen

  Alt 11. Jun 2004, 11:34
Zitat von Moon:
Delphi-Quellcode:
;
        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;
str is ne Funktion, nenn Deine Variable anders (z.B. strMyString), dann müssts gehn.. Die anderen Fehler dürften sich damit auch erledigen

So far
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Moon

Registriert seit: 10. Jun 2004
9 Beiträge
 
#9

Re: Bestimmt Bereiche aus .txt-Datei auslesen

  Alt 11. Jun 2004, 11:40
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
  Mit Zitat antworten Zitat
Moon

Registriert seit: 10. Jun 2004
9 Beiträge
 
#10

Re: Bestimmte Bereiche aus .txt-Datei auslesen

  Alt 11. Jun 2004, 14:04
Delphi-Quellcode:
   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);
Geht das so in sachen "Programmierstil"? Weil funktionieren tut es schonmal
  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 17:40 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