Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Dateidatum lesen und setzen (WinAPI)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 27.11.2007, 23:32    Titel: Dateidatum lesen und setzen (WinAPI) Antworten mit Zitat

Code:
'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

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 06.12.2007, 20:25    Titel: Antworten mit Zitat

Hi,
das ist sowas von Klasse grinsen
Schon lange habe ich vor, meine mp3-Sammlung zu (re)organisieren.
Der Dateiname soll dann aus Künstler - Titel.mp3 gebildet werden.
Damit lassen sich die Dateien alphabetisch ordnen. Ich möchte nun ganz gerne, daß alle zusammen gehörenden Dateien
dieselbe Zeit erhalten, wobei in den Minuten die Track-Nummer steht.
(Damit kann ich dann die Dateien nach Tracks ordnen.)
Der Aufbau der ID3-Tags ist hier ja bestens erklärt zwinkern
..und um eine Datei komplett einzulesen, finde ich garantiert was auf ytwinky.freebasic.de happy
Um den Speicher brauche ich mir keine Gedanken mehr zu machen, da mein Celeron-Rechner 1GB hat..
..nur leider muß(te) ich ihn neu einrichten traurig
Aber das ist bald erledigt und dann kann ich das mal probieren..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz