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.