Foro | | | |  Michael Wodrich | Desde que siempre mehrere Projekte gleichzeitig al Wickel habe, kann ya veces el Suchen después de el letzten Arbeiten una wenig Tiempo en Anspruch nehmen. Dafür Yo quería ya siempre veces algo escribir.
Last1000 listet el zuletzt angefaßten 1000 Archivos en. ¿Por qué así viele? Weil Windows y en el Hintergrund laufende Programas en efecto Archivos anfaßen, y el voluntad todos con aufgelistet.
Wer daran herumwurschteln möchte - sólo a: es Freeware.
Der Abbruch se ejecuta todavía a para Ende des gerade bearbeiteten Verzeichnisses (así entsteht kein Speichermüll, porque FindClose hier greift).
Ein neuer Start löscht vorher el beiden Listboxen.
Yo habe el Diálogo con los ROC aufgebaut y de hay el Icons genommen. KompilierenMarcaSeparación $P+
********************** HINWEISE ********************************
CODE ERZEUGT MIT ROKOS OBJECT CREATOR 4.2b
DATUM 25.02.2006
VERWENDETE PROFANVERSION IST 9.1-NT XPROFAN
CODE ERSTELLT UNTER WINDOWS XP
********************** DATEN ***********************************
PROJEKTNAME Last1000
BESCHREIBUNG Neueste Dateien auflisten
VERSION 1.00
AUTOR Michael Wodrich
ERSTELLDATUM 25.02.2006
********************** ANMERKUNGEN *****************************
Dieses Programm listet die Dateien
(der letzten 10 Tage) und zeigt diese
in einer sortierten Listbox an.
Es werden maximal 1000 Dateien gezeigt.
Durch die Sortierung fallen alte Dateien
dabei heraus.
Wenn alles glatt läuft, dann läßt sich
dieses Programm jederzeit abbrechen.
*) "der letzten 10 Tage" habe ich mal herausgenommen
********************** QUELLCODE *******************************
Set("ErrorLevel",0)
Set("TrueColor",1)
Set("AutoPaint",2)
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
$I C:PROFANLIBBILDBUTTON.INC (Für Bildbuttons/Iconbuttons)
Vertauschen der Ziffern (0 -> 9, 1 -> 8, 2 -> 7, ...)
führt zu absteigender Sortierung (alles außer Ziffern fällt hier weg)
Proc SortDesc
Parameters dat$
Declare B#,i%,j%,k%,erg$
Dim B#,Len(dat$)+1
String B#,0 = dat$
j% = Len(dat$)
While i% < j%
k% = Byte(B#,i%)
Byte B#,i% = If( (k% >= 47) and (k% <= 57),105 - k%, 46)
Inc i%
EndWhile
erg$ = String$(B#,0)
Dispose B#
Return Translate$(erg$,".","")
EndProc
Zeile für die sortierte Listbox aufbereiten
Proc SortZeile
Parameters Datei$
Declare Zeile$
If FileExists(Datei$)
Zeile$ = SortDesc(GetFDate$(Datei$) + GetFTime$(Datei$)) +
" " +
GetFDate$(Datei$) +
" " +
Datei$
EndIf
Return Zeile$
EndProc
PROC DIALOG ---------------------------------------------------------------------------
Verzeichnisse werden hier zwischengelagert
Proc Add_L
Parameters x$
Declare y$,i%
i% = SendMessage(LB&,$01A2,-1,Addr(x$))
If i% < 0
AddString(LB&,x$)
EndIf
EndProc
...und nach dem Abruf auch wieder entfernt
Proc Get_L
Declare s$
If GetCount(LB&,0) > 0
s$ = GetString$(LB&,0)
DeleteString(LB&,0)
EndIf
Return s$
EndProc
Hier wird die sortierte Listbox mit den Dateinamen gefüllt
Proc Add_R
Parameters x$
Declare y$,i%
y$ = SortZeile(x$)
i% = SendMessage(SLB&,$01A2,-1,Addr(y$))
If i% < 0
AddString(SLB&,y$)
SetText TEXT2&,"gefundene Dateien: "+Format$("#,##0",GetCount(SLB&))+Space$(10)
If GetCount(SLB&) > 1000
DeleteString(SLB&,1000)
SetText TEXT2&,"gefundene Dateien: "+Format$("#,##0",GetCount(SLB&))+Space$(10)
EndIf
EndIf
EndProc
ein Plattenverzeichnis durcharbeiten
Proc WholeSub
Declare Datei$,V$
ChDir Pfad$
Case @Right$(Pfad$,1) = "" : Pfad$ = Del$(Pfad$,@Len(Pfad$),1)
Let Datei$ = @Upper$(@FindFirst$("*.*"))
WhileNot %IOResult
If gestartet%
If Datei$ <> ""
If @Left$(Datei$,1) = "[" ->ein Verzeichnis
Datei$ = @Mid$(Datei$,2,@Len(Datei$)-2)
IfNot (Datei$=".") Or (Datei$="..")
V$ = Pfad$ + "" + Datei$
Add_L( V$ ) ...merken
EndIf
Else ->eine Datei
V$ = Pfad$ + "" + Datei$
Add_R( V$ ) ...auflisten
EndIf
EndIf
------
If %PeekMessage ...wenn eine Message anliegt
If %MWnd = DLG& Ist die Message für mich???
-------
SetTimer 500
WAITINPUT ja, holen
während der Dateisuche interessiert nur der Abbruch-Wunsch
If GETFOCUS(ICONBUTTON1&) ICONBUTTON (Abbruch)
SETFOCUS(DLG&)
Clear gestartet% Arbeit einstellen
SendMessage(LB&,$0184,0,0) Verzeichnis-Liste löschen
EndIf
KillTimer
-------
EndIf
EndIf
------
EndIf
Let Datei$ = @Upper$(@FindNext$())
EndWhile
EndProc
Vorarbeiten für ein ganzes Laufwerk
Proc WholeDisk
Parameters Lw$
If gestartet%
Declare Such$
Pfad$ = @Upper$(Lw$)
If Len(Pfad$) = 1
Pfad$ = Pfad$ + ":"
ElseIf Right$(Pfad$,1) = ":"
Pfad$ = Pfad$ + ""
ElseIf Right$(Pfad$,1) = ""
Pfad$ = Left$(Pfad$,Len(Pfad$) - 1)
EndIf
If DirExists(Pfad$) nicht vergessen (bei Wechselmedien wichtig)
ChDir Pfad$
Pfad$ = @GetDir$("@")
Add_L( Pfad$ )
Pfad$ = Get_L()
While Pfad$ <> ""
WholeSub
Pfad$ = Get_L()
EndWhile
EndIf
EndIf
EndProc
DECLARE DLG&, DIALOGENDE%
DECLARE LB&, SLB&
DECLARE TEXT1&, TEXT2&
DECLARE ICONBUTTON1&, ICONBUTTON2&, ICONBUTTON3&
Declare gestartet%
WINDOWSTYLE 31
DLG& = CREATE("DIALOG",%HWND,"Neueste Dateien zeigen",((%MAXX / 2) - (640 / 2)),((%MAXY / 2) - (480 / 2)), 640,480)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
LB& = CREATE("LISTBOX",DLG&,"LISTBOX",10,50,180,400)
Create("Tooltip",DLG&,LB&,"Hier werden die noch zu bearbeitenden Verzeichnisse aufgelistet.")
TEXT1& = CREATE("TEXT",DLG&,"zu bearbeitende Verzeichnisse:",10,20,150,20)
TEXT2& = CREATE("TEXT",DLG&,"gefundene Dateien:",200,20,180,20)
SLB& = CREATE("SORTEDLISTBOX",DLG&,"SORTEDLISTBOX",200,50,420,400)
Create("Tooltip",DLG&,SLB&,"Hier stehen die gefundenen Dateien - jüngste oben.")
ICONBUTTON "30","C:\PROFAN\ROCICON.DLL",DLG&,520,6,40,40
LET ICONBUTTON1& = @&(0)
Create("Tooltip",DLG&,ICONBUTTON1&,"Die Suche wird abgebrochen.")
ICONBUTTON "18","C:\PROFAN\ROCICON.DLL",DLG&,570,6,40,40
LET ICONBUTTON2& = @&(0)
Create("Tooltip",DLG&,ICONBUTTON2&,"Dies ist der Ausgang - Auf Wiedersehen!")
ICONBUTTON "52","C:\PROFAN\ROCICON.DLL",DLG&,470,6,40,40
LET ICONBUTTON3& = @&(0)
Create("Tooltip",DLG&,ICONBUTTON3&,"Eine neue Suche wird gestartet.")
SETFOCUS(DLG&)
Clear DIALOGENDE%
WHILENOT DIALOGENDE%
WAITINPUT
If %KEY = 2
Clear gestartet%
LET DIALOGENDE% = 1
ELSEIF GETFOCUS(LB&) LISTBOX
SETFOCUS(DLG&)
ELSEIF GETFOCUS(SLB&) SORTEDLISTBOX
SETFOCUS(DLG&)
ELSEIF GETFOCUS(ICONBUTTON3&) ICONBUTTON (Start)
SETFOCUS(DLG&)
gestartet% = 1
SendMessage(LB&,$0184,0,0)
SendMessage(SLB&,$0184,0,0)
ELSEIF GETFOCUS(ICONBUTTON1&) ICONBUTTON (Abbruch)
SETFOCUS(DLG&)
Clear gestartet%
ELSEIF GETFOCUS(ICONBUTTON2&) ICONBUTTON (Ende)
SETFOCUS(DLG&)
Clear gestartet%
LET DIALOGENDE% = 1
ENDIF
If gestartet%
WholeDisk("C")
WholeDisk("D")
WholeDisk("E")
WholeDisk("F")
WholeDisk("G")
EndIf
ENDWHILE
DESTROYWINDOW(DLG&)
ENDPROC --------------------------------------------------------------------------------
Proc Main
Declare Pfad$
WindowTitle "Last1000"
WindowStyle 16+64+1024
Window 0,0 - 0,ass=s2>0
Diálogo
ENDPROC
Main
ProgEnd
Schöne Grüße Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 25.02.2006 ▲ |
| |
| |  Michael Wodrich | Upps, igual qué kaputt editiert. Jetzt es el Abbruch no mehr bastante sauber. Como habt Ihr entonces sí qué para Basteln. 
Schöne Grüße Michael Wodrich
P.S.: Das lag al 2. WaitInput. Das Yo jezt con SetTimer überlistet.
Hoffentlich son eure Platten no a groß........ |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 25.02.2006 ▲ |
| |
|
RespuestaThemeninformationenDieses Thema ha 1 subscriber: |