Seite 1 von 1
Datei vom ende an auslesen
Verfasst: 26.07.2005 19:37
von Icke
Wie ist da der eleganteste Weg? Ich habe eine Textdatei deren Inhalt ich von unten nach oben auslesen möchte.
Beispiel :
Code: Alles auswählen
Dim t$(10000)
ReadFile(0,"d:\wg.txt")
Repeat
t$(i)=Str(Loc())
a$=ReadString()
i+1
Until Eof(0)
Repeat
i-1
FileSeek(Val(t$(i)))
a$=ReadString()
Debug a$
FileSeek(Val(t$(i)))
Until i=0
Ich würde gerne auf das Array verzichten. Wer zeigt einem Blinden den Weg?
Verfasst: 26.07.2005 20:08
von Kiffi
Datei ganz normal in den Speicher laden, diesen dann aber rückwärts auslesen:
Code: Alles auswählen
FF = ReadFile(#PB_Any, DeineDatei)
If FF
MemBuff = AllocateMemory(Lof())
ReadData(MemBuff, Lof())
CloseFile(FF)
DateiInhalt$= PeekS(MemBuff)
FreeMemory(MemBuff)
For intI = Len(DateiInhalt$) To 0 Step -1
Debug Mid(DateiInhalt$, intI, 1)
Next
EndIf
Grüße ... Kiffi
Verfasst: 26.07.2005 20:45
von Icke
Thx für die Lösung im Ansatz, ich möchte Zeilenweise auslesen. Könnte dann nach Steuerzeichen suchen um LF zu erkennen, das gefällt mir dann schon viel besser als mein Schnipsel...
Verfasst: 26.07.2005 21:36
von Kiffi
> ich möchte Zeilenweise auslesen. Könnte dann nach Steuerzeichen suchen
> um LF zu erkennen
dann empfehle ich noch die Verwendung von [c]CountString()[/c] und [c]StringField()[/c]
Code: Alles auswählen
For intI = CountString(DateiInhalt$, #LF$) To 0 Step -1
Debug StringField(DateiInhalt$, intI, #LF$)
Next
Grüße ... Kiffi
Verfasst: 27.07.2005 08:31
von Rings
oder FastfileText aus der PBOSL, der sicherlich schnellste weg sowas
zu bewerkstelligen mit freiem Zugriff auf alle zeilen:
Code: Alles auswählen
File.s="c:\bibeltext.txt"
Zeilenanzahl=FastOpenTextFile(file)
OpenConsole()
For ZL=Zeilenanzahl To 1 Step -1
zeileninhalt.s=FastReadLine(ZL)
PrintN(Str(ZL) +" " + Zeileninhalt)
Next
Input()
CloseConsole()
Verfasst: 27.07.2005 08:48
von Kiffi
> oder FastfileText aus der PBOSL, der sicherlich schnellste weg sowas
> zu bewerkstelligen
[klatschdiehandandiestirn] ja, so geht's ja auch
Grüße ... Kiffi
Verfasst: 27.07.2005 21:17
von Icke
Das ist die optimale Lösung, thx dafür.