Progressbar mit Start Pause und Exit
Verfasst: 16.11.2014 23:31
Hallo,
ich würde gerne eine Programm realisieren, dass ein Verzeichnis (P_RekursiveDateisuche(ImportPfad.s) permanent auf deren Inhalt überwacht. Die darin gefundenen Dateien sollen im späteren Verlauf eingelesen und entsprechend dem Inhalt weiterverarbeitet werden. Um zu sehen, dass das Programm läuft möchte ich gerne eine Progressbar einsetzen, die immer vor der Suche im Verzeichnis auf 0 gesetzt wird und sobald das Verzeichnis durchsucht wurde auf 100 & springt. Das ganze soll dann wiederholt werden, es sei denn jemand drückt die Pause oder Exit-Taste. Hatte an eine Repeat:Until- Schleife gedacht, aber dann friert mir immer das Fenster ein.
Hier mein bisheriger Code. Wahrscheinlich eine relativ einfache Sache, aber ich komme momentan einfach nicht drauf. Villeicht ist jemand von euch so nett, mir zu helfen.
Ich danke in jedem Fall im Vorraus.
Besten Dank und Grüße
frankmannb
ich würde gerne eine Programm realisieren, dass ein Verzeichnis (P_RekursiveDateisuche(ImportPfad.s) permanent auf deren Inhalt überwacht. Die darin gefundenen Dateien sollen im späteren Verlauf eingelesen und entsprechend dem Inhalt weiterverarbeitet werden. Um zu sehen, dass das Programm läuft möchte ich gerne eine Progressbar einsetzen, die immer vor der Suche im Verzeichnis auf 0 gesetzt wird und sobald das Verzeichnis durchsucht wurde auf 100 & springt. Das ganze soll dann wiederholt werden, es sei denn jemand drückt die Pause oder Exit-Taste. Hatte an eine Repeat:Until- Schleife gedacht, aber dann friert mir immer das Fenster ein.
Hier mein bisheriger Code. Wahrscheinlich eine relativ einfache Sache, aber ich komme momentan einfach nicht drauf. Villeicht ist jemand von euch so nett, mir zu helfen.
Ich danke in jedem Fall im Vorraus.
Code: Alles auswählen
Enumeration
#BT_Exit
#BT_StartPause
#PRB_Dateidurchlauf
#TG_Dateidurchlauf
#Timer
EndEnumeration
Global quit
; Rekursive Dateisuche
Procedure P_RekursiveDateisuche(inputpath.s)
dir = ExamineDirectory(#PB_Any, inputpath, "*.*")
While NextDirectoryEntry(dir)
dir_type.l = DirectoryEntryType(dir)
dir_name.s = DirectoryEntryName(dir)
dir_path.s = inputpath + dir_name
If dir_name = "." Or dir_name = ".."
Continue
EndIf
If dir_type = #PB_DirectoryEntry_File
If ReadFile(0, dir_path) ; wenn die Datei geöffnet werden konnte, setzen wir fort...
While Eof(0) = 0 ; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist
line.s = ReadString(0)
Wend
CloseFile(0) ; schließen der zuvor geöffneten Datei
Else
MessageRequester("Information","Konnte Datei nicht öffnen!")
EndIf
EndIf
Wend
SetGadgetState(#PRB_Dateidurchlauf,100)
FinishDirectory(dir)
EndProcedure
ImportPfad.s = "c:\temp\daten\"
ArchivPfad.s = "c:\temp\daten2\"
If OpenWindow(0, 0, 0, 600, 200 , "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
ProgressBarGadget(#PRB_Dateidurchlauf, 10, 10, 580, 30, 0, 100,#PB_ProgressBar_Smooth)
ButtonGadget(#BT_StartPause,150,100,150,50,"START")
ButtonGadget(#BT_Exit,300,100,150,50,"EXIT")
TextGadget(#TG_Dateidurchlauf,240,70,150,50,"Suche WMS-Telegramme")
AddWindowTimer(0, #Timer, 20)
Value = 0
Repeat
Event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case #BT_StartPause
If GetGadgetText(#BT_StartPause) = "START"
SetGadgetText(#BT_StartPause,"PAUSE")
SetGadgetState(#PRB_Dateidurchlauf,0)
Repeat
P_RekursiveDateisuche(ImportPfad.s)
Until quit = 1
Else
SetGadgetText(#BT_StartPause,"START")
EndIf
Case #BT_Exit
quit = 1
EndSelect ; Select EventGadget()
Case #PB_Event_Menu
EndSelect
Until Event = #PB_Event_CloseWindow Or Quit = 1
EndIf
frankmannb