Guten Abend.
Die Frage ist kurz und knapp:
Kann ich den ProgressBar auch füllen, wenn keine While-Schleife läuft? (In einem Testskript mit GUI und While klappt es tadellos)
In meinem Skript füllt sich der Balken nicht, obwohl ich ihn per GUICtrlSetData fülle!
#include <Array.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Statistik", 446, 250, -1, -1)
$Progress1 = GUICtrlCreateProgress(16, 200, 406, 25)
$Label1 = GUICtrlCreateLabel("Bitte warten Sie!", 104, 32, 235, 41)
GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Bearbeite: ", 16, 124, 113, 33)
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("", 16, 153, 404, 23)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###
If FileExists("Statistik.txt") Then
FileDelete("Statistik.txt")
EndIf
$File = InputBox("Dateiname", "Bitte Dateinamen eingeben!")
GUISetState(@SW_SHOW)
Global $Dir = @DesktopDir & "\" & $File & ".txt"
Global $Lines [1]
_FileReadToArray($Dir,$Lines)
Global $Data [$Lines[0]+1]
For $i = 1 To $Lines[0]
$Data [$i] = StringTrimRight(StringTrimLeft(FileReadLine($Dir,$i),7),8)
GUICtrlSetData($Label3, $Data[$i])
GUICtrlSetData($Progress1, $i/$Lines[0])
Sleep (200)
Next
$Data = _ArrayUnique($Data)
[/autoit][autoit][/autoit][autoit]GUICtrlSetData($Label2, "Schreibe: ")
[/autoit][autoit][/autoit][autoit]For $x = 1 To $Data[0]
FileWrite ("Statistik.txt", $Data[$x]&@CRLF)
GUICtrlSetData($Label3, $Data[$x])
Next
GUIDelete($Form1)
[/autoit][autoit][/autoit][autoit]_ArrayDisplay($Data)
[/autoit]Kurze Frage Nebenbei:
Wie kann ich "GUI_EVENT_CLOSE" ausführen, obwohl ich keine While-Schleife hab?
Ich hatte in meiner frühen AutoIt Zeit das mal gemeistert, hab nur kein Skript Beispiel mehr.
Denn ihr werdet sehen, das Programm kann ich nicht mit dem roten Windows X beenden.
Das war irgendwas mit einem "EventSet" oder sowas in der Art
EDIT:
Der Progressbar füllt sich nun!
Dies mache ich so:
GUICtrlSetData($Progress1, $i/(100/$Lines[0]))
[/autoit]
Bei einer Datei mit 30 Positionen klappt dies.
Bei meiner Kundenkartei mit 28000 Personen ist der Balken nach 1 Sekunde voll, die Bearbeitungsvorgägge laufen jeodch noch!