Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Dateien und Laufwerke

Dateidatum unter Win lesen und setzen

Lizenz:Erster Autor:Letzte Bearbeitung:
LGPLRedakteurVolta 27.11.2007
'SetFileDate.bas 27.11.2007 by Volta
'Die FB - Funktion FileDateTime liest das Dateidatum der letzten Aenderung
'Das Prog liest auch das unter Win existierende Erstellungdatum der Datei
'und das Datum des letzten Dateizugriffs.
'Ebenso können auch Datei-datum und -zeit der Erstellung oder Änderung
'neu gesetzt werden. Das Dateizugriffsdatum wird sowieso gesetzt.
'Die Kommentierung habe ich mir ergespart, wer hiermit weiter experimentieren
'will sollte sich über die verwendeten API-Aufrufe gründlich informieren,
'Datenverluste sind absolut möglich!!
'Benutzung daher auf eigenes Risiko!

#Include Once "windows.bi"
#Include Once "vbcompat.bi" 'file.bi wird mitgeladen

Screen 18,32

Function filehandel( fname As String ) As HANDLE
  Dim OFS As OFSTRUCT
  OFS.cBytes = Len( OFS )
  Function = Cast( HANDLE, OpenFile( fname, @OFS, OF_WRITE ))
End Function

Function FTime2Serial( fTime As FILETIME ) As Double
  Dim sTime As SYSTEMTIME
  FileTimeToLocalFileTime( @fTime, @fTime )
  FileTimeToSystemTime   ( @fTime, @sTime )
  Function = DateSerial( sTime.wYear, sTime.wMonth, sTime.wDay ) + _
             TimeSerial( sTime.wHour, sTime.wMinute, sTime.wSecond )
End Function


Function Serial2FTime( datser As Double ) As FILETIME
  Dim As SYSTEMTIME sTime
  Dim As FILETIME fTime ,lfTime
  sTime.wYear   = Year  ( datser )
  sTime.wMonth  = Month ( datser )
  sTime.wDay    = Day   ( datser )
  sTime.wHour   = Hour  ( datser )
  sTime.wMinute = Minute( datser )
  sTime.wSecond = Second( datser )
  SystemTimeToFileTime( @sTime, @fTime )
  LocalFileTimeToFileTime( @fTime, @lfTime )
  Function = lfTime
End Function


Dim TestFile As String = "test.txt"
Dim FileHdl As HANDLE
Dim As FILETIME cTime, lTime, lwTime
Dim DTformat As String = "dd.mm.yyyy, hh:mm:ss"
Dim Antwort As String
Dim As Double datv

FileHdl = filehandel( TestFile )

If FileHdl > 0 Then
  GetFileTime( FileHdl, @cTime, @lTime, @lwTime )
  Print "Datei : "; TestFile
  Print "Datei erstellt am:   "; Format( FTime2Serial( cTime ), DTformat )
  Print "letzte Aenderung am: "; Format( FTime2Serial( lwTime), DTformat )
  Print "letzter Zugriff am:  "; Format( FTime2Serial( lTime ), DTformat )
  Print
  Print "FB FileDateTime :    "; Format( FileDateTime( TestFile ), DTformat )
  Print

  Input "letzte Dateiaenderung neu setzen (j/n) : ", antwort
  If Trim(Left(antwort,1)) = "j" Then
    Print
    Input "Datum ( dd.mm.yyyy ) : ", antwort
    datv = DateValue( antwort )
    Input "Zeit ( hh:mm:ss ) : ", antwort
    datv += TimeValue( antwort )
    Print Format( datv , DTformat )
    If datv > 31000 then
      lwtime = Serial2FTime( datv )
      SetFileTime FileHdl, @cTime, @lTime, @lwTime
    Else
      ?"ungueltiges Datum! < "; Format( 31001, DTformat )
    End if
  End If
  CloseHandle( FileHdl)
  Print "Neue FileDateTime :  "; Format( FileDateTime( TestFile ), DTformat )
End If
Print "verdisch..."
Sleep

Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 27.11.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 27.11.2007 von RedakteurVolta gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen