Code-Beispiel
Dateidatum unter Win lesen und setzen
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
LGPL | Volta | 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 | |||||||
---|---|---|---|---|---|---|---|
|