Bug in CreateFile() ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Kooky
Beiträge: 47
Registriert: 18.09.2004 16:13
Wohnort: München
Kontaktdaten:

Bug in CreateFile() ?

Beitrag von Kooky »

Hi,
wieso geht folgender Code mit CreateFile() nicht aber mit OpenFile() ?

Code: Alles auswählen

Debug "CreateFile"
If CreateFile(0,"test1.txt")
  For x = 0 To 2
    FileSeek(0)
    count = ReadLong()
    Debug count
    FileSeek(0)
    WriteLong(count+1)
  Next
  CloseFile(0)
EndIf
DeleteFile("test1.txt")
Debug "OpenFile"
If OpenFile(0,"test2.txt")
  For x = 0 To 2
    FileSeek(0)
    count = ReadLong()
    Debug count
    FileSeek(0)
    WriteLong(count+1)
  Next
  CloseFile(0)
EndIf
DeleteFile("test2.txt")
Ich hab jetzt bestimmt in meinem neusten Projekt ewig nach dem Fehler gesucht und hab festgestellt, dass es daran lag. Hab jetzt extra ein Beispielcode dafür geschrieben, damit das Problem gut verdeutlicht wird.
mfg. Kooky <)
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Bug in CreateFile() ?

Beitrag von Kiffi »

> wieso geht folgender Code mit CreateFile() nicht aber mit OpenFile() ?

sorry, aber Dein Code macht doch recht wenig Sinn.

CreateFile() erstellt eine neue leere Datei. Wieso machst Du darin ein
FileSeek und dann ein ReadLong?

Und bei Deinem OpenFile: Bist Du Dir sicher, dass 'test2.txt' vorhanden ist?
(Zumal Du 'test2.txt' am Ende Deines Codes wieder löscht)

Grüße ... Kiffi
a²+b²=mc²
Kooky
Beiträge: 47
Registriert: 18.09.2004 16:13
Wohnort: München
Kontaktdaten:

Beitrag von Kooky »

OK.
sorry, aber Dein Code macht doch recht wenig Sinn.

CreateFile() erstellt eine neue leere Datei. Wieso machst Du darin ein
FileSeek und dann ein ReadLong?
mein code soll nicht umbeding sinn ergeben /:-> .
Er soll nur verdeutlichen, dass wenn ich eine Datei mittels CreateFile()
erstelle, ReadLong() , ReadString() und ReadByte() nicht funktioniert.
Und bei Deinem OpenFile: Bist Du Dir sicher, dass 'test2.txt' vorhanden ist?
(Zumal Du 'test2.txt' am Ende Deines Codes wieder löscht)
OpenFile und Createfile sind im grunde doch gleich.
Der einzigste unterschied ist,
dass OpenFile eine Datei öffnet, falls vorhanden und
dass CreateFile eine Datei löscht und dann neu erstellt, falls vorhanden. Wenn keine Datei existiert, dann erstellen OpenFile und CreateFile eine neue.
Also könnte man auch sagen, dass CreateFile nichts anderes macht, als DeleteFile() und danach OpenFile()
Falls ich mich da nicht ganz täusche :oops:
Vielleicht vestehst du jetzt besser was ich meine :wink:
mfg. Kooky
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 »

CreateFile() erstellt eine neue Datei, Schreibzugriffe und FileSeek funktionieren, Leseoperationen sind aber nicht möglich (machen ja auch keinen Sinn). Also nach dem erstellen schließen und dann mit OpenFile() öffnen
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
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag von Lebostein »

Wenn du mit CreateFile() eine vorhandene Datei öffnest, dann wird sie gelöscht!! Denn CreateFile() erstellt eine neue Datei, exisiteirt die Datei schon, so wird sie überschrieben.
Antworten