In PB fehlt eine wichtige Funktion !

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

In PB fehlt eine wichtige Funktion !

Beitrag 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.
Bild
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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.
Bild
horst
Beiträge: 70
Registriert: 08.09.2004 19:33
Wohnort: München
Kontaktdaten:

Beitrag 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)
horst
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

stimmt... das ist mir so eigentlich nicht eingefallen :( Dann kann der Thread ja geschlossen werden....
Bild
Antworten