'**************************************************************************** ' ' Directoryeintr„ge ermitteln PowerBASIC 3.0/3.2 ' ' entwickelt von / developed by : Thomas Gohel ' Fido : Thomas Gohel@2:2410/330.1 ' InterNet: author@pbsound.snafu.de ' Homepage: http://www.snafu.de/~pbsound/ ' '**************************************************************************** SHARED DTASeg??, DTAOff??, Attribut?, DateiSeg??, DateiOff??, Fehler% SHARED FindNotNext% CLS FindFirst("*.*") DO WHILE FindNotNext% = 0 FindNext LOOP END FUNCTION FindFirst(Datei$) ! mov ax, &h2f00 ! int &h21 ! mov DTASeg??, es ! mov DTAOff??, bx BIT SET Attribut?,0 :'Schreibschutz BIT SET Attribut?,1 :'Versteckt BIT SET Attribut?,2 :'Systemdatei BIT SET Attribut?,3 :'Label BIT SET Attribut?,4 :'Verzeichnisss BIT SET Attribut?,5 :'Archiv Datei$ = Datei$ + CHR$(0) DateiSeg?? = STRSEG(Datei$) DateiOff?? = STRPTR(Datei$) ! push ds ! mov ah, &h4e ! mov cx, Attribut? ! mov dx, DateiOff?? ! mov ds, DateiSeg?? ! int &h21 ! pop ds ! jnc DTAFirstLesen ! mov Fehler%, ax PRINT "Datei not found: ";Fehler% EXIT FUNCTION DTAFirstLesen: FindNotNext% = 0 GetDTA END FUNCTION FUNCTION FindNext ! mov ah, &h4f ! int &h21 ! jnc DTANextLesen ! mov FindNotNext%, ax PRINT "keine Datei(en) mehr gefunden: ";FindNotNext%; "DOS-Code" EXIT FUNCTION DTANextLesen: FindNotNext% = 0 GetDTA END FUNCTION FUNCTION GetDTA public DEF SEG = DTASeg?? i% = 30 WHILE PEEK$(DTAOff?? + i%, 1) <> CHR$(0) FileName$ = FileName$ + PEEK$(DTAOff?? + i%, 1) INCR i% WEND FileDate?? = CVWRD(PEEK$(DTAOff??+24,2)) FileZeit?? = CVWRD(PEEK$(DTAOff??+22,2)) FileStunde?? = INT(FileZeit?? / 2048) FileMinute?? = INT(FileZeit?? / 32) AND 63 FileGross$ = USING$("###,###,###", CVDWD(PEEK$(DTAOff??+26,8))) FileDatum$ = USING$("##",FileDate?? AND 31) + "." FileDatum$ = FileDatum$ + USING$("##" , INT(FileDate??/32) AND 15) + "." FileDatum$ = FileDatum$ + USING$("####",INT(FileDate??/512) + 1980) FileZeit$ = "00:00:1980" FileZeit$ = RIGHT$((STR$(FileStunde??)), 2) + ":" + RIGHT$((STR$(FileMinute??)), 2) REPLACE " " WITH "0" IN FileZeit$ REPLACE " " WITH "0" IN FileDatum$ FileAttribut? = PEEK(DTAOff??+21) DEF SEG FileAttribut$ = "......" IF BIT(FileAttribut?,0) = 1 THEN MID$(FileAttribut$,1,1) = "r" IF BIT(FileAttribut?,1) = 1 THEN MID$(FileAttribut$,2,1) = "h" IF BIT(FileAttribut?,2) = 1 THEN MID$(FileAttribut$,3,1) = "s" IF BIT(FileAttribut?,3) = 1 THEN MID$(FileAttribut$,4,1) = "v" IF BIT(FileAttribut?,4) = 1 THEN MID$(FileAttribut$,5,1) = "d" IF BIT(FileAttribut?,5) = 1 THEN MID$(FileAttribut$,6,1) = "a" PRINT USING$("\ \",Filename$);" "; PRINT FileGross$ ;" ";FileDatum$;" "; FileZeit$;" "; FileAttribut$ END FUNCTION