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....