Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jean
Anmeldungsdatum: 26.12.2004 Beiträge: 15 Wohnort: Schweiz
|
Verfasst am: 26.12.2004, 11:22 Titel: Die 2,4,6,8 und 10 lezte Zeile einer Datei auslesen |
|
|
Hallo
Ich weiss das ich schon mal was ähnliches gefragt habe, aber dort konnte mir niemand eine funktionierende Antwort geben.
Also mein Problem ist das ich die 2,4,6,8 und 10 lezte Zeile einer Datei auslesen sollte.
Könnte mir jemand mit ein paar Zeilen Code aushelfen ?
1000 Dank Jean  |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 26.12.2004, 11:28 Titel: |
|
|
Siehe hier. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Jean
Anmeldungsdatum: 26.12.2004 Beiträge: 15 Wohnort: Schweiz
|
Verfasst am: 26.12.2004, 11:32 Titel: Hmm... |
|
|
Sorry, aber die Antworten aus dem Beitrag gehen alle nicht.
Es wird nichts aus der Datei gelesen und die Vars bleiben leer.  |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 26.12.2004, 14:43 Titel: Neuer Versuch |
|
|
Hallo.
Und ein neuer Anlauf...
Code: | DIM Gesamtzeilen AS INTEGER
DIM Datei AS STRING
DIM ZEILEN(1 TO 5) AS STRING
DIM ZEILENNR(1 TO 5) AS INTEGER
Datei = "TEST.TXT"
OPEN Datei FOR INPUT AS #1
DO
LINE INPUT #1, TEMP$
GesamtZeilen=GesamtZeilen+1
LOOP UNTIL EOF(1)
CLOSE #1
PRINT "Die Datei hat insgesamt "; LTRIM$(STR$(GesamtZeilen)); " Zeilen."
j%=10
FOR i%=1 TO 5
ZEILENNR(i%) = GesamtZeilen-j%
PRINT "Die "; LTRIM$(STR$(j%)); ". letzte Zeile ist Zeilennummer "; LTRIM$(STR$(ZEILENNR(i%))); "."
j%=j%-2
NEXT i%
zaehler%=0
OPEN DATEI FOR INPUT AS #1
DO
zaehler%=zaehler%+1
LINE INPUT #1, TEMP$
FOR i%= 1 TO 5
IF zaehler%=ZEILENNR(i%) THEN ZEILEN(i%) = TEMP$
NEXT i%
LOOP UNTIL EOF(1)
CLOSE #1
PRINT:PRINT
COLOR 14: PRINT "Und nun das Ergebnis:":PRINT:COLOR 7
FOR i% = 1 TO 5
PRINT ZEILEN(i%)
NEXT i%
SLEEP:END |
Im Array ZEILEN() befinden sich dann die 5 verlangten Zeilen als Strings.
Der Code funktioniert und ist getestet.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 26.12.2004, 16:00 Titel: |
|
|
Für kleine Dateien ist dies i.O.. Bei grossen Dateien dagegen kann es entsprechend lange dauern (performancemässig nicht ganz optimal), weil man die Zeilen zwei Mal einliest. Unter Linux ist sonst "tail" noch recht effizient implementiert, d.h. selbst auf einem 486er-Server läuft ein "tail -n 20" recht schnell auf eine z.B. 100 MB grosse Logdatei angewendet, d.h. muss dort nicht einmal alles einlesen, sondern macht dort vermutlich gleich ein SEEK an den Schluss, liest eine Handvoll ein und zählt die Zeilenenden nach. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 26.12.2004, 16:29 Titel: Ja. |
|
|
Hallo.
Ja, das stimmt. Aber bei aktuelleren PCs sollten selbst Dateien mit 10000 Zeilen noch nicht allzulange dauern. (=> Wenige Sekunden)
Zu beachten ist bei Dateien mit mehr als 32767 Zeilen, dass man einen Long Integer (LONG) als Datentyp für GesamtZeilen benutzen muss!
Effizienter wäre es vielleicht auch mit GET nach Zeilenumbrüchen zu suchen.
Wenn man bei so einer Methode bleiben möchte, kann man diese ja auch noch mit Assembler optimieren.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Jean
Anmeldungsdatum: 26.12.2004 Beiträge: 15 Wohnort: Schweiz
|
Verfasst am: 26.12.2004, 17:27 Titel: THX |
|
|
Juhuu.. vielen Dank an alle
Also jezt hab ich nur noch ein Problem: Wie kann ich nun machen das ich am Schluss 5 Vars habe ?
Vielen Dank nochmals ... Jean |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
|