Seite 1 von 1
Kleine Frage zu "FileSize" und "CreateFile"
Verfasst: 14.08.2013 00:26
von FISCHAUGE
Hi,
ich habe eine kleines Problem.
Ich möchte gerne eine Datei erstellen der Datei Name ist bsp: "14082013.tbd"
Nun würde ich gerne wenn dieser Name schon Vorhanden ist einfach eine nummer hinter denn Datei namen bsp: "14082013_1.tdb" schreiben falls dieser schon vorhanden ist "14082013_2.tbd" usw....
Wie lässt sich das am besten umsetzen?
Code: Alles auswählen
dateisuche = FileSize("tbd\"14082013".tbd")
If dateisuche = -1
CreateFile(0,"tbd\"14082013.tbd")
closefile(0)
else
???
endif
grüße
Re: Kleine Frage zu "FileSize" und "CreateFile"
Verfasst: 14.08.2013 02:21
von man-in-black
moin moin,
würde ich eigentlich genauso machen, wie du im Beispielcode schon angedeutet hast.
Einfach um eine Schleife erweitern, die nach dem noch nicht vergebenen Index sucht.

(Gleiche Vorgehensweise wie bei der ersten Überprüfung)
Gibt aber sicher noch schönere Lösungen.
Code: Alles auswählen
if Not Filesize("xyz.wv")
createFile(0, "xyz.wv")
Else
i=1
While Filesize("xyz_"+str(i)+".wv")
i+1
wend
CreateFile(0, "xyz_"+str(i)+".wv")
endif
CloseFile(0)
(hab aber gerade nicht im Kopf, was FileSize bei Nichtexistenz ausspuckt. Evt anpassen...)
Ist der Pfad schon vorgegeben, musst du in vorher aufsplitten, bevor der Index dran kommt.
Re: Kleine Frage zu "FileSize" und "CreateFile"
Verfasst: 14.08.2013 10:28
von CSHW89
man-in-black hat geschrieben:hab aber gerade nicht im Kopf, was FileSize bei Nichtexistenz ausspuckt. Evt anpassen...
-1. Deshalb angepasst:
Code: Alles auswählen
if (Filesize("xyz.wv") = -1)
createFile(0, "xyz.wv")
Else
i=1
While (Filesize("xyz_"+str(i)+".wv") <> -1)
i+1
wend
CreateFile(0, "xyz_"+str(i)+".wv")
endif
CloseFile(0)
Allerdings würde ich es wahrscheinlich so machen. Zwar brauch ich eine Variable mehr, dafür ist es kompakter, Geschmacksache halt:
Code: Alles auswählen
name.s = "xyz.wv"
i=0
While (Filesize(name) <> -1)
i+1
name = "xyz_"+Str(i)+".wv"
wend
CreateFile(0, name)
CloseFile(0)
lg Kevin
Re: Kleine Frage zu "FileSize" und "CreateFile"
Verfasst: 14.08.2013 10:50
von NicTheQuick
Das hier ist korrekt:
Es könnte nämlich auch sein, dass "xyz.wv" ein Verzeichnis ist. Und dann würde er versuchen mit 'CreateFile()' eine gleichnamige Datei zu erstellen, was natürlich nicht geht.
Re: Kleine Frage zu "FileSize" und "CreateFile"
Verfasst: 14.08.2013 12:16
von FISCHAUGE

vielen dank an euch auf die Schleife bin ich nicht gekommen.
Re: Kleine Frage zu "FileSize" und "CreateFile"
Verfasst: 16.08.2013 10:18
von Makke
Hi,
seit dem es den Parameter: #PB_File_SharedRead gibt, benutze ich folgende Funktion:
Code: Alles auswählen
Procedure.b FileExist(FullPathAndFilename$)
Protected.i hFile = ReadFile(#PB_Any, FullPathAndFilename$, #PB_File_SharedRead)
If isFile(hFile)
CloseFile(hFile)
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Spricht da etwas gegen (ausser das es nur für Windows funktioniert) ? Also kann es da zu falschen Ergebnissen kommen (Datei existiert, aber kann trotzdem nicht gelesen werden ?) ?
Re: Kleine Frage zu "FileSize" und "CreateFile"
Verfasst: 16.08.2013 10:55
von _JON_
@Makke
könnte sein das du bei fehlenden Rechte ein falsches Ergebnis bekommst.
Probier mal das hier:
Code: Alles auswählen
Procedure FileExists(file.s)
If GetFileAttributes_(file) <> $FFFFFFFF
ProcedureReturn 1
EndIf
EndProcedure
Aber warum benutzt du eigentlich nicht PB's FileSize() ?
Re: Kleine Frage zu "FileSize" und "CreateFile"
Verfasst: 16.08.2013 14:18
von Makke
_JON_ hat geschrieben:@Makke
könnte sein das du bei fehlenden Rechte ein falsches Ergebnis bekommst.
...
Aber warum benutzt du eigentlich nicht PB's FileSize() ?
Naja, bei fehlenden Rechten werde ich wohl auch nicht schreiben können (in der Rechtevergabe theoretisch möglich aber unüblich), von daher hatte ich das bisher noch nie in Betracht gezogen ... und Deine andere Frage, warum nicht Filesize, ist mir bisher nicht in den Sinn gekommen, weil das andere halt auch funktioniert.