Textdatei Zeilenweise auslesen+in einen String speichern^^

Anfängerfragen zum Programmieren mit PureBasic.
K.Putt
Beiträge: 122
Registriert: 01.09.2006 00:17

Textdatei Zeilenweise auslesen+in einen String speichern^^

Beitrag von K.Putt »

Dieses funktioniert nicht und ich verstehe nicht warum,
jede ausgelesene Zeile soll einem String hinzugefügt werden, sodass der String am Ende die ganze Datei enthält (sagen wir 100 Zeilen a 100 Zeichen)

Ich benötige dieses, da ich den String im Speicher umfassend bearbeiten und dann wieder speichern möchte.

Zeilenweise bearbeiten wäre eine Alternative, allerdings um eniges komplizierter, da es sich um eine XML Datei handelt, in der ich nach Tags suche und leider kommen viele Tags mehrmals vor, so dass ich ganze Abschnitte zugleich bearbeiten möchte und nicht nur eine Zeile einzeln.

Code: Alles auswählen

If ReadFile(0,"xml.txt") 
  While Eof(0)=0
   
   input.s = Trim(ReadString(0,))
 
 text.s=text.s+input.s 
; hier sollte doch eigentlich der string verlängert werden, wird er aber nicht....?
; Debug input.s dagegen gibt natürlich jede Zeile aus...  
  
  Wend
Debug text.s
;String is leer...
Liegt es daran, dass die Daten nicht in einen String passen oder habe ich einen anderen Denkfehler ?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Bei mir geht es
Im Debugger steht natürlich alles in einer Zeile, aber es geht.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
K.Putt
Beiträge: 122
Registriert: 01.09.2006 00:17

Beitrag von K.Putt »

PB 4 ?

EDIT...sorry, schon gelesen, a.
das ist ja merkwürdig ^^

Habs gerade noch mal getestet, geht nicht, auch nicht mit +#CRLF$ am ende jeder zeile...

Wie lang ist Deine Testdatei ?

EDIT_2
Also, es liegt tatsächlich an der Länge, ein String kann wohl doch nicht unendlich sein^^
bei 5 Zeilen klappt es, bei hunderten nicht mehr...
Zuletzt geändert von K.Putt am 01.09.2006 01:02, insgesamt 1-mal geändert.
PB 5.x & Win 7 64Bit
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Du kannst auch die Datei in einen Rutsch lesen und dann die Zeilen wieder Trennen. Beispiel:

Code: Alles auswählen

If ReadFile(0, "xml.txt")
  length = Lof(0)
  *Mem = AllocateMemory(length)
  If *Mem
    ReadData(0, *Mem, length)
  EndIf
  CloseFile(0)  
EndIf

NewList Lines.s()

Text.s = PeekS(*MEM, length)
For i = 1 To CountString(Text, #LF$) + 1
  AddElement(Lines())
  Lines() = ReplaceString(StringField(Text, i, #LF$), #CR$, "")
Next

ForEach Lines()
  Debug Lines()
Next

FreeMemory(*Mem)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
K.Putt
Beiträge: 122
Registriert: 01.09.2006 00:17

Beitrag von K.Putt »

Hey, Super. Ich danke Dir, das wäre der nächste Ansatz für mich gewesen.
Hab schon probiert gehabt mit dem Speicher, aber das auslesen funktionierte nicht :freak:

Dein Code geht aber, ist genau das, was ich brauche.

Wünsche Dir eine geruhsame Nacht !

:allright:
Zuletzt geändert von K.Putt am 01.09.2006 02:06, insgesamt 3-mal geändert.
PB 5.x & Win 7 64Bit
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Aber gründlich testen, hab nur so auf die schnelle reingehackt :mrgreen:

Gute Nacht
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
K.Putt
Beiträge: 122
Registriert: 01.09.2006 00:17

Beitrag von K.Putt »

Hab ich, für "kurz reingehackt" verdammt gut :D
PB 5.x & Win 7 64Bit
Antworten