Datei vom ende an auslesen

Anfängerfragen zum Programmieren mit PureBasic.
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Datei vom ende an auslesen

Beitrag 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?
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Beitrag 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...
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag 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() 
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> oder FastfileText aus der PBOSL, der sicherlich schnellste weg sowas
> zu bewerkstelligen

[klatschdiehandandiestirn] ja, so geht's ja auch :-)

Grüße ... Kiffi
a²+b²=mc²
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Beitrag von Icke »

Das ist die optimale Lösung, thx dafür.
Antworten