Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst AutoIT Progress Bar während Funktion

Mitglied: pytrelooc

pytrelooc (Level 1) - Jetzt verbinden

23.01.2014, aktualisiert 27.01.2014, 5267 Aufrufe, 6 Kommentare

Hallo Leute,

ich würde gerne eine Progress Bar solange laufen lassen wie eine Funktion dauert in welcher ich eine Datei auslese.
Meine Funktion sieht so aus:

01.
Func ComputeStatusFileRead()
02.

03.
	Local $File_Pointer, $File_Line
04.
	Local $Count_Line
05.

06.
	GUICtrlSetData($Edit_UserList, "")
07.

08.
	If FileExists("c:\temp\" & $sCServerUser) Then
09.
		$File_Pointer= FileOpen("c:\temp\" & $sCServerUser,0)
10.
		IF $File_Pointer <> -1 Then
11.
			$Count_Line=1
12.
			While 1
13.
				$File_Line=FileReadLine($File_Pointer, $Count_Line)
14.
				If @error = -1 Then ExitLoop
15.
				$Count_Line = $Count_Line+1
16.
				; ConsoleWrite( $Count_Line & ' ' & $File_Line & @CRLF)
17.
				; User Liste ausgeben
18.
				GUICtrlSetData($Edit_UserList, $File_Line & @CRLF, 1)
19.
			WEnd
20.
			FileClose($File_Pointer)
21.
		EndIf
22.
	Else
23.
		MsgBox(0,"Error","File " & $sCServerUser & " could not be opened")
24.
	EndIf
25.
 EndFunc
Da diese Funktion aber etwas dauert wollte ich eine Progress Bar für diese Zeit laufen lassen.

Diese habe ich so geschrieben:

01.
Func LoadingScreen()
02.

03.
local $progress = 0
04.

05.

06.

07.
while $progress <> 110
08.
$progress+=1
09.
guictrlsetdata($Progress1,$progress)
10.
sleep(70)
11.
WEnd
12.

13.
GUIDelete($Form5)
14.
GUISetState(@SW_SHOW, $Form1)
15.

16.
EndFunc
17.

18.
gibt es eine Möglichkeit eine Progressbar gleichzeitig mit der Funktion laufen zu lassen ?
Multithreading ist ja nicht möglich in AutoIT aber evtl. gibt es ja einen Trick wie man das lösen könnte ?

Viellicht könnt ihr mir ja helfen

Gruß

Pytrelooc
Mitglied: colinardo
LÖSUNG 23.01.2014, aktualisiert 27.01.2014
Hallo Pytrelooc,
warum machst du das Update der Progress-Bar nicht direkt aus der eigentlichen Funktion die die Arbeit erledigt, dort könntest du dann auch berechnen (anhand deines Counters) wie lange es noch dauert und die Progress-Bar entsprechend prozentual updaten.

Beispiel:
01.
#NoTrayIcon
02.
#include <ButtonConstants.au3>
03.
#include <GUIConstantsEx.au3>
04.
#include <ProgressConstants.au3>
05.
#include <WindowsConstants.au3>
06.
Opt("GUIOnEventMode", 1)
07.
$Form1 = GUICreate("Form1", 296, 117, 192, 124)
08.
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
09.
$Progress1 = GUICtrlCreateProgress(16, 16, 257, 25)
10.
$btnStart = GUICtrlCreateButton("Start", 104, 64, 75, 25, $WS_GROUP)
11.
GUICtrlSetOnEvent(-1, "btnStartClick")
12.
GUISetState(@SW_SHOW)
13.

14.
While 1
15.
	Sleep(100)
16.
WEnd
17.

18.
Func btnStartClick()
19.
	GUICtrlSetState($btnStart,$GUI_DISABLE)
20.
	meineFunktion()
21.
	GUICtrlSetState($btnStart,$GUI_ENABLE)
22.
EndFunc
23.

24.
Func Form1Close()
25.
	exit
26.
EndFunc
27.

28.

29.
Func meineFunktion()
30.
	$zeilen = 530
31.
	for $i = 1 to $zeilen
32.
		$percent = Round(($i / $zeilen) * 100,0)
33.
		GUICtrlSetData($Progress1,$percent)
34.
		Sleep(10)
35.
	next
36.
EndFunc
Grüße Uwe
Bitte warten ..
Mitglied: pytrelooc
24.01.2014 um 10:03 Uhr
Hallo Uwe,

ich verstehe leider nicht wo ich nun meinen Code platzieren muss damit die Progressbar parallel zur Ausführung abläuft.

Gruß Pytrelooc
Bitte warten ..
Mitglied: colinardo
LÖSUNG 24.01.2014, aktualisiert 27.01.2014
Zitat von pytrelooc:
ich verstehe leider nicht wo ich nun meinen Code platzieren muss damit die Progressbar parallel zur Ausführung abläuft.
ich weiß zwar nicht wie deine Form aufgebaut ist, aber im Prinzip sähe deine Function dann so aus:
01.
#include <File.au3>
02.

03.
Func ComputeStatusFileRead()
04.

05.
	Local $File_Pointer, $File_Line
06.
	Local $Count_Line
07.

08.
	GUICtrlSetData($Edit_UserList, "")
09.

10.
	If FileExists("c:\temp\" & $sCServerUser) Then
11.
		$File_Pointer= FileOpen("c:\temp\" & $sCServerUser,0)
12.
		
13.
		;Gesamtanzahl Zeilen in der Datei in Variable speichern
14.
		$anzahlZeilen = _FileCountLines("c:\temp\" & $sCServerUser)
15.

16.
		IF $File_Pointer <> -1 Then
17.
			$Count_Line=1
18.
			While 1
19.
				$File_Line=FileReadLine($File_Pointer, $Count_Line)
20.
				If @error = -1 Then ExitLoop
21.
				$Count_Line = $Count_Line+1
22.
				; ConsoleWrite( $Count_Line & ' ' & $File_Line & @CRLF)
23.
				; User Liste ausgeben
24.
				GUICtrlSetData($Edit_UserList, $File_Line & @CRLF, 1)
25.
				
26.
				;ProgressBar Wert setzen
27.
				$percent = Round(($Count_Line / $anzahlZeilen) * 100,0) 
28.
				GUICtrlSetData($Progress1,$percent) 
29.
			WEnd
30.
			FileClose($File_Pointer)
31.
		EndIf
32.
	Else
33.
		MsgBox(0,"Error","File " & $sCServerUser & " could not be opened")
34.
	EndIf
35.
 EndFunc
Grüße Uwe
Bitte warten ..
Mitglied: pytrelooc
27.01.2014 um 10:14 Uhr
Okey so funktioniert es

Vielen Dank !

ist es auch möglich während einem RUNWAIT den Ladebalken laufen zu lassen ?
Da dies nur eine Zeile ist wüsste ich jetzt nicht wie man das machen könnte.
Es muss auch gar nicht genau nach Fortschritt laufen, die Hauptsache wäre wenn es zur gleichen Zeit fertig ist wie das RUNWAIT.

Gruß

pytrelooc
Bitte warten ..
Mitglied: colinardo
LÖSUNG 27.01.2014, aktualisiert um 10:38 Uhr
Das wäre nur mit MultiThreading möglich: http://www.autoitscript.com/forum/topic/29326-another-multi-process-hel ...

oder du baust dir ein zusätzliches AutoIt Script mit einer Form welche nur aus einer ProgressBar besteht, welche du aus deinem jetzigen Script aufrufst, und die dann nach dem Durchlauf deines Jobs durch dein Haupt-Script geschlossen wird.

Grüße Uwe
Bitte warten ..
Mitglied: pytrelooc
27.01.2014 um 10:38 Uhr
Das habe ich mir schon gedacht.
Vielen Dank für deine Hilfe !

Gruß pytrelooc
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Write-Progress
gelöst Frage von BudSpenserBatch & Shell9 Kommentare

Die Frage steht weiter unten! Wenn ich das Skript ausführe, sehe ich kein ProgressBar, bzw geht auf einmal garnichts, ...

Windows 10
Lautstärke mit AutoIt ändern
Frage von HelloWorldWindows 103 Kommentare

Hey erstmal frohes neues Jahr euch Ich weiß ich schreibe spät Ich habe versucht mit AutoIT die Lautstärke meines ...

Entwicklung

AutoIT - Auf Eingabeaufforderung reagieren

Frage von veniplexEntwicklung6 Kommentare

Hallo zusammen, folgendes Problem: Ich habe eine AutoIT GUI. In einem Input gebe ich einen Befehl ein, z.B. . ...

Entwicklung

Autoit Script datei als Email anhang

gelöst Frage von bfbertiEntwicklung5 Kommentare

Hallo. Ich habe folgendes Problem: Der Drucker bei uns auf arbeit das FAX TO MAIL wegen der SSL verschlüsselung ...

Neue Wissensbeiträge
Windows 7
Win7 Update scheitert KB4512506
Information von infowars vor 4 StundenWindows 7

Falls jemand auch das Problem hat mit dem: Monatliches Sicherheitsqualitätsrollup für Windows 7 für x64-basierte-Systeme (KB4512506) Das scheint mit ...

Humor (lol)
Wenn hacken nach hinten los geht
Information von em-pie vor 1 TagHumor (lol)4 Kommentare

Moin, weil heute Freitag ist, nachfolgender kurzer Artikel zum schmunzeln:) l+f: NULL ist ein notorischer Falschparker

Windows Update
Windows: August 2019 Patchday-Probleme
Information von kgborn vor 1 TagWindows Update2 Kommentare

Ich kippe mal einige kurze Informationen hier rein - vielleicht hilft es Betroffenen. Die August 2019-Updates für Windows haben ...

Sicherheits-Tools
Kaspersky "Sicherheitslösung"
Information von Looser27 vor 2 TagenSicherheits-Tools1 Kommentar

Wieso überrascht mich das nicht wirklich? Kaspersky gefährdet Privatsphäre

Heiß diskutierte Inhalte
SAN, NAS, DAS
Leiser stromsparender Debian EXT4 NAS-Heimserver: ECC-RAM wie betreiben?
Frage von Laser12SAN, NAS, DAS25 Kommentare

Moin, aktuell stelle ich einen Rechner zusammen, den mein Computerhändler bauen wird. Nach Jahrzehnten mit Desktops und zwei Notebooks ...

LAN, WAN, Wireless
VPN Tunnel zu PiVPN steht, aber kein Internet
gelöst Frage von KabuntelLAN, WAN, Wireless18 Kommentare

Hallo Community, habe heute PiVPN auf meinem Raspberry Pi 3b+ installiert, mit dem How To vom Kuketz-Blog Ich kann ...

Netzwerkgrundlagen
Proxmox auf dedicated Root Server mit nur einer IP nutzen
gelöst Frage von ndreier933Netzwerkgrundlagen12 Kommentare

Hallo Community, ich bin neu hier im Forum und weiß nicht ob ich das Thema richtg zugeordnet habe?Zusätzlich habe ...

Router & Routing
PfSense routing OpenVPn und IPSec
Frage von TheOnlyOneRouter & Routing11 Kommentare

Hallo zusammen, ich habe 3 Standorte die per VPN miteinander verbunden sind. (siehe Bild) Nun stehe ich vor der ...