WriteLong() geht nicht richtig !?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
mull
Beiträge: 34
Registriert: 13.12.2005 20:18
Kontaktdaten:

WriteLong() geht nicht richtig !?

Beitrag von mull »

Bei meinem Code wird die Startsvariable wohl nicht richtig gespeichert.
Bei jedem Programmstart sollte Starts um 1 erhöht und wieder abgespeichert werden.
Starts bleibt aber auf 2 stehen.
OpenFile ist doch zum Lesen+Schreiben ?

Code: Alles auswählen


Global Starts.L

Procedure CountStarts()
   Ergebnis = OpenFile(0, "Starts.dat")
   Starts = ReadLong()
   Starts = Starts + 1
   WriteLong(Starts)
   CloseFile(0)
EndProcedure

CountStarts()
Debug starts
_____________
bobobo hat gecodegetagt :wink:
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Von wegen geht nicht richtig. :shock:
Das ist wie Autofahren oder Lesen. Muss man lernen.

Code: Alles auswählen

Fileseek(0) ;ist Dein Freund
Du musst den DateiSchreibLeseZeiger auf den Anfang der Datei schieben
vorm Schreiben :wink:
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

genau.

oder:
du öffnest mit ReadFile(), liest die Zahl aus, schließt das File
öffnest mit CreateFile(), schreibst die Zahl, schließt das File

..damit überschreibst du automatisch das ganze alte File.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
mull
Beiträge: 34
Registriert: 13.12.2005 20:18
Kontaktdaten:

Beitrag von mull »

Danke, es funktioniert.
In der Hilfe steht das die Datei zum lesen + schreiben geöffnet oder erstellt wird.

Dieser Fileseek(0) Befehl kenn ich in der Art nur bei Dateien die nicht Sequenziel abgearbeitet werden, wo man sich z.B Datensatz 5, 1, 3 u.s.w einzeln holen kann.

Bei PB ist schon einiges anders wie man es von anderen Sprachen kennt.
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

mull hat geschrieben:Danke, es funktioniert.
In der Hilfe steht das die Datei zum lesen + schreiben geöffnet oder erstellt wird.

Dieser Fileseek(0) Befehl kenn ich in der Art nur bei Dateien die nicht Sequenziel abgearbeitet werden, wo man sich z.B Datensatz 5, 1, 3 u.s.w einzeln holen kann.

Bei PB ist schon einiges anders wie man es von anderen Sprachen kennt.
Äh ne, sorry, aber das ist genau so wie man es erwarten müsste. Wenn du ein Long aus der Datei einliest wird der Dateizeiger um 4 Byte weitergesetzt. Schreibst du nun etwas in die Datei wird es an die aktuelle Stelle des Zeigers geschrieben. Ich kenne keine (ernsthafte) Programmiersprache bei der das anders wäre.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Antworten