Seite 1 von 1
In PB fehlt eine wichtige Funktion !
Verfasst: 17.12.2004 18:52
von MVXA
Hallo !
Einigen Programmierern, die vorher mit Quick- oder Visual Basic gearbeitet haben, könnte es schon aufgeafllen sein. In PureBasic fehlt ne wichtige Funktion für das Arbeiten mit Dateien. Ich rede hierbei von der Funktion [c]FreeFile()[/c]. Diese Funktion gibt die nähste freien Datei-ID zurück, die man mit OpenFile öffnen kann. Sowas ist schon wichtig, wenn man in einer Funktion mit API-Befehlen arbeitet und im Hauptprogramm auch noch Dateien geöffnet hat.
Verfasst: 17.12.2004 19:07
von freedimension
Das Handbuch sagt dazu:
Wenn #PB_Any als '#Datei' Parameter verwendet wird, dann wird der Identifier der neuen Datei als 'Ergebnis' zurückgegeben.
Verfasst: 17.12.2004 19:52
von MVXA
Versuch damit mal ne API zu füttern

Ich hab hier im Forum Code von Agent gesehen, wo eine Funktion drin stand, die das Datum der Datei zurückgibt, wann sie erstellt wurde. Hier der Code:
Code: Alles auswählen
Procedure.s getfiledate(filename.s)
; Protected filestamp
hFile.l = OpenFile(0,filename) ; change to your own path/file
GetFileTime_(hFile, @Create.FILETIME, @Access.FILETIME, @WRITE.FILETIME)
FileTimeToSystemTime_(@Create, @SysTime.SYSTEMTIME)
filestamp.s=""
If SysTime\wDay < 10 : filestamp+"0"+Str(SysTime\wDay) : Else : filestamp+Str(SysTime\wDay) : EndIf
filestamp+"."
If SysTime\wMonth < 10 : filestamp+"0"+Str(SysTime\wMonth) : Else : filestamp+Str(SysTime\wMonth) : EndIf
filestamp+"."
filestamp+Str(SysTime\wYear)
filestamp+" "
If SysTime\wHour < 10 : filestamp+"0"+Str(SysTime\wHour) : Else : filestamp+Str(SysTime\wHour) : EndIf
filestamp+":"
If SysTime\wMinute < 10 : filestamp+"0"+Str(SysTime\wMinute) : Else : filestamp+Str(SysTime\wMinute) : EndIf
filestamp+":"
If SysTime\wSecond < 10 : filestamp+"0"+Str(SysTime\wSecond) : Else : filestamp+Str(SysTime\wSecond) : EndIf
ProcedureReturn filestamp
EndProcedure
Wenn ich bei OpenFile die 0 durch #PB_Any ersetze, spielt die API nicht mehr so mit wie es seien sollte.
Verfasst: 17.12.2004 20:05
von horst
> Wenn ich bei OpenFile die 0 durch #PB_Any ersetze, spielt die API nicht mehr so mit wie es seien sollte.
Weil dann die Funktion nicht das API-Handle zurückgibt, sondern die von PB vergebene File-Nummer.
fileNummer = openfile(#pb_any,fname)
fileHandle = UseFile(fileNummer)
Verfasst: 17.12.2004 20:37
von MVXA
stimmt... das ist mir so eigentlich nicht eingefallen

Dann kann der Thread ja geschlossen werden....