Français
Source/ Codesnippets

Dateiattribute

 

KompilierenMarqueSéparation
Autor: Dieter Zornow (für XProfan 9 optimiert: Roland G. Hülsmann)
Code zur freien Verwendung
Def FindFirstFile(2) !"KERNEL32","FindFirstFileA"
Def FindNextFile(2) !"KERNEL32","FindNextFileA"
Def FindClose(1) !"KERNEL32","FindClose"
DEF FileTimeToLocalFileTime(2) !"Kernel32","FileTimeToLocalFileTime"
DEF FileTimeToSystemTime(2) !"Kernel32","FileTimeToSystemTime"
Def GetLastError(0) !"KERNEL32","GetLastError"
Struct TFileInfo = LName$(256),   Langer Dateiname
SName$(12),    Kurzer Dateiname (8.3)
Size!,         Dateigröße (Float für Größen über 2 GB)
WDay$(10),     Wochentag des letzen Schreibzugriffes (Write)
WDate$(10),    Datum des letzen Schreibzugriffes
WTime$(8),     Uhrzeit des letzen Schreibzugriffes
CDay$(10),     Wochentag der Erstellung der Datei (create)
CDate$(10),    Datum der Erstellung der Datei
CTime$(8),     Uhrzeit der Erstellung der Datei
ADay$(10),     Wochentag letzter Zugriff auf Datei (access)
ADate$(10),    Datum des letzter Zugriff auf Datei
ATime$(8),     Uhrzeit letzter Zugriff auf Datei
Attr$(10)       Dateiattribut

Proc weekday

    -----------
    Parameters day&
    Return substr$("Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag",day& + 1,",")

endproc

proc Fattrib

    -----------
    parameters attrib&
    return if(testbit(attrib&,4),"<DIR> ","")
    + if(testbit(attrib&,0),"r","-")
    + if(testbit(attrib&,5),"a","-")
    + if(testbit(attrib&,1),"h","-")
    + if(testbit(attrib&,2),"s","-")

endproc

Proc ApiFindFile

    ---------------
    parameters file$,filehndl&,FileInfo#
    Declare info#,file#,utc#,time#,findhndl&
    Dim File#,261
    Dim info#,328
    DIM utc#,8
    DIM time#,16
    String File#,0=file$

    If filehndl& = 0

        findhndl& = FindFirstFile(file#,info#)

    else

        FindNextFile(filehndl&,info#)

    endif

    FileInfo#.Attr$  = Fattrib(@long(Info#,0)) attribut
    FileInfo#.LName$ = @String$(Info#,44)      longname
    FileInfo#.Sname$ = @String$(Info#,304)     shortname
    FileInfo#.size!  = @long(Info#,28) * 65536 + @long(Info#,32)  dateigröße
    -------------------------Erstellzeit
    FileTimeToLocalFileTime(info#+4,utc#)
    FileTimeToSystemTime(utc#,time#)

    if word(time#,0) >= 1601

        FileInfo#.cday$  = weekday(word(time#,4))
        FileInfo#.cdate$ = Format$("00",word(time#,6))+"."+Format$("00",word(time#,2))+"."+Format$("00",wor d(time#,0)) Last written date
        FileInfo#.ctime$ = Format$("00",word(time#,8))+":"+Format$("00",word(time#,10))+":"+Format$("00",wo rd(time#,12)) last written time

    else

        FileInfo#.cday$  = ""
        FileInfo#.cdate$ = "00.00.0000"
        FileInfo#.ctime$ = "00:00:00"

    endif

    -----------------------------Letzter Zugriff
    FileTimeToLocalFileTime(info#+12,utc#)
    FileTimeToSystemTime(utc#,time#)

    if word(time#,0) >= 1601

        FileInfo#.aday$  = weekday(word(time#,4))
        FileInfo#.adate$ = Format$("00",word(time#,6))+"."+Format$("00",word(time#,2))+"."+Format$("00",wor d(time#,0)) Last written date
        FileInfo#.atime$ = Format$("00",word(time#,8))+":"+Format$("00",word(time#,10))+":"+Format$("00",wo rd(time#,12)) last written time

    else

        FileInfo#.aday$  = ""
        FileInfo#.adate$ = "00.00.0000"
        FileInfo#.dtime$ = "00:00:00"

    endif

    --------------------------- last written
    FileTimeToLocalFileTime(info#+20,utc#)
    FileTimeToSystemTime(utc#,time#)

    if word(time#,0) >= 1601

        FileInfo#.wday$  = weekday(word(time#,4))
        FileInfo#.wdate$ = Format$("00",word(time#,6))+"."+Format$("00",word(time#,2))+"."+Format$("00",wor d(time#,0)) Last written date
        FileInfo#.wtime$ = Format$("00",word(time#,8))+":"+Format$("00",word(time#,10))+":"+Format$("00",wo rd(time#,12)) last written time

    else

        FileInfo#.wday$  = ""
        FileInfo#.wdate$ = "00.00.0000"
        FileInfo#.wtime$ = "00:00:00"

    endif

    ---------------------------------------

    If left$(FileInfo#.attr$,5) = "<DIR>" Verzeichnisse nach oben in einer Listbox

        let FileInfo#.lname$="["+Trim$(FileInfo#.lname$)+"]"

    endif

    Dispose File#
    Dispose info#
    Dispose UTC#
    Dispose time#
    return findhndl&

endproc

proc ApiFindFileFirst

    -------------------
    parameters file$,FileInfo#
    Return ApiFindFile(file$,0,FileInfo#)

EndProc

proc ApiFindFileNext

    ------------------
    parameters filehndl&,FileInfo#
    Return ApiFindFile("",filehndl&,FileInfo#)

EndProc

Rückgabe: FindHandle&, Ergebnisse in: FileInfo-Struktur (s.o.)
Aufruf und Abrage:
FindHandle& = ApiFindFileFirst(Datei mit Pfad,FileInfo-Struktur)
FindHandle& = ApiFindFileNext(FindHandle&,FileInfo-Struktur)
nicht vergessen das Findhandle mit Findclose(Findhandle) zu schließen
Beispiel:
FHandle& = ApiFindFileFirst("c:\Temp*.exe",FileInfo#)
ApiFindFileNext(FHandle&,FileInfo#)
... usw
FindClose(FHandle&)
Bei *.* werden natürlich auch Verzeichnisse gefunden, diese kann man
über das "<DIR>" in FileInfo#.Attr$ sauber ausfiltern
Beispielprogramm
================
Declare Filefindhndl&
Declare FileInfo#
Dim FileInfo#,TFileInfo
window 0,0 - 1024,768
Set("Decimals",0)
Filefindhndl& = ApiFindFileFirst("C:\Documents and Settings\rhuelsma\My DocumentsDownloads\*.*",FileInfo#)

repeat

    print FileInfo#.LName$ + "|"
    + FileInfo#.SName$ + "|"
    + FileInfo#.ADate$ + "|"
    + FileInfo#.ATime$ + "|"
    + FileInfo#.Attr$  + "|"
    + Format$("###,###,###,##0 Bytes",FileInfo#.Size!)
    ApiFindFileNext(filefindhndl&,FileInfo#)

until GetLastError() = 18

FindClose(filefindhndl&)
 href='./../../funktionsreferenzen/XProfan/imprimer/'>imprimer "Fertig!"
waitinput
 
04.06.2005  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

1.279 Views

Untitledvor 0 min.
RudiB.29.04.2020
AndreasS22.01.2019
Thomas Freier28.12.2013

Themeninformationen

cet Thema hat 1 participant:

iF (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie