Seite 1 von 1

WriteLong() geht nicht richtig !?

Verfasst: 16.12.2005 16:17
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:

Verfasst: 16.12.2005 16:22
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:

Verfasst: 16.12.2005 18:55
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.

Verfasst: 16.12.2005 21:43
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.

Verfasst: 16.12.2005 22:02
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.