Einlesen aus Dateien

Anfängerfragen zum Programmieren mit PureBasic.
IngolfZ
Beiträge: 27
Registriert: 29.10.2005 11:58
Wohnort: Dreieich (Hessen)
Kontaktdaten:

Beitrag von IngolfZ »

Ich weiss zwar nicht, warum du die Zeilen Byteweise einliest, aber da könnte der Hund begraben liegen. :twisted:

Am Ende der Zeilen steht noch (unsichtbar) #CR$ und #LF$
Die musst du rausfieseln. Genau das hast du vorher mit dem Entfernen hinter dem letzten Zeichen gemacht.
Man wird alt wie 'ne Kuh und lernt immer noch dazu
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

also der Befehl ReadString sollte dein Freund sein! Dann kannst du den String mit Mid oder was weiß ich noch Teilen und hast dann alle deine Zahlen :)
Durch ReadString werden die Umbrüche entfernt und alles sollte kein Problem mehr sein.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Sylvia hat geschrieben:Probier mal das hier:

Code: Alles auswählen

OpenFile(1,"C:\lotto.txt")

While Eof(1)=0
     Debug ReadString()
Wend

CloseFile(1)
So, und da hab ich mal ne frage, ohne jetzt die anderen folgenden Threads gelesen zu haben.
Das habe ich bereits woanders gefragt, aber keine Antwort drauf erhalten... :( http://forums.purebasic.com/german/view ... i+einlesen
Bei mir muss ich immer die daten zeilenweise einlesen, solange Eof() <> -1, woran liegt das? Ich meine ergebnis = 0 Andergenis <> -1 ist immer dann der fall, wenn ergebnis = 0. mache ich aber while eof() = 0, dannliets er sich dumm und dämlich!
bei repeat schleifen sind die bedingungen ja umgekerht, also: until Eof() = 0, funzt bei mir aber auch nicht... (bei eof() habe ich schon jeweils immer den richtige dateihandle drin). weiß jemand, was ich falsch mache?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Wie kommst du denn auf -1 ?
Eof(#Blubb) ergibt <> 0 am Ende des Files, sonst 0
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Also nochmal:
Wenn irgendwo in der Datei, dann Eof() = 0.
Ende der Dtaei erreicht, dann Eof() <> 0, korrekt so, Chef?

OK, also entweder bin ich ein bisschen doof 8) :lol: oder bei mir auf dem System muss ich immer prüfen, ob eof() = -1 der fall ist, wenn ja, dann ende erreicht... wobei -1 <> 0. aber ich glaube, programme, die ich wie anfangs beschrieben laufen lasse, hängen sich irgendwie beim lesen auf... werds mal mit hexors idee probiern.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Hilfe hat geschrieben: Die Funktion gibt einen Wert ungleich 0 zurück, wenn das Ende der angegebenen '#Datei' erreicht wurde
Anders ausgedrückt:
Der Rückgabewert ist nicht wirklich definiert.
Fakt ist, er ist ungleich 0 beim Erreichen des Endes.
Kann also sein, dass du bei einem File 1, beim näxten -1 oder irgendne andere Hausnummer kriegst.

Deswegen <> 0 testen und nicht drüber nachdenken ;)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

OK, hab verstanden. Ich wollts ja so machen wie in der Hilfe oder du grad beschrieben hast.
Aber wenn ich alle ReadStrings()'s Debuggen lasse, dann hängt das Programm sich auf, bzw. gibt unendlich Zeilen aus... Kann sein, dass ich was falsch gemacht habe, will ich auch gar nicht abstreiten, aber dass mir dieser "Fehler" bei zwei verschienden Projekten unterläuft, finde ich schon etwas seltsam...

Egal, mit jeder PB-Zeile wird man schlauer. :allright:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
OptimusPrime
Beiträge: 43
Registriert: 07.03.2005 16:52

Beitrag von OptimusPrime »

Ich arbeite viel mit grossen Textdateien,
wie man korrekt einliest und ausgibt findest Du z.B. hier :

Übrigens kannst Du die einzelenen LottoZahlen mit StringField()
anhand des Leerzeichens trennen um später mit den Werten zu arbeiten.

Ich weiss ja nicht, wofür Du diese brauchst, aber sicherlich für Statistik oder Auswertung der eigenen Kreuzchen :)

http://forums.purebasic.com/german/viewtopic.php?t=6679

:twisted:
Antworten