Tratsch rund um Autoit / Autoit Talk | kleinere Fragen

07/03/2013 19:44 Achat#1411
@Requi
Das ist egal.
Quote:
Originally Posted by »FlutterShy™ View Post
Ne . Nur halt wenn im String " vorkommt nimmt man '
Msgbox(0,0,"String""xD")

MfG
07/03/2013 21:33 evoh12#1412
Hi,

ich habe auch nocheinmal eine Frage und zwar habe ich eine Script, indem ein Benutzername und ein Passwort aus jeweils einem Textfeld ausgelesen wird. Jetzt habe ich es so gemacht das der Benutzer mehrere Benutzer und Passwörter eingeben kann d.h. mehrere Textfelder.

Jetzt zu meiner Frage :) : Ist es möglich, mit einer Schleife oder ähnlichem es so hinzukriegen das er beim 1. Durchlauf Benutzer1 nimmt und beim 2. Benutzer2?

Denn in meiner jetzigen Form ist der Script ewig lang, da ich den Vorgang immer nur hintereinander eingefügt habe.

Danke für eure Hilfe
Gruß
Evoh
07/03/2013 22:10 Achat#1413
Quote:
Originally Posted by evoh12 View Post
Hi,

ich habe auch nocheinmal eine Frage und zwar habe ich eine Script, indem ein Benutzername und ein Passwort aus jeweils einem Textfeld ausgelesen wird. Jetzt habe ich es so gemacht das der Benutzer mehrere Benutzer und Passwörter eingeben kann d.h. mehrere Textfelder.

Jetzt zu meiner Frage :) : Ist es möglich, mit einer Schleife oder ähnlichem es so hinzukriegen das er beim 1. Durchlauf Benutzer1 nimmt und beim 2. Benutzer2?

Denn in meiner jetzigen Form ist der Script ewig lang, da ich den Vorgang immer nur hintereinander eingefügt habe.

Danke für eure Hilfe
Gruß
Evoh
2d Array mit Benutzer|Passwort und dann in einer For-Schleife durchgehen.

Gleich kommt noch ein Beispiel

€dit:
Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 223, 165, 192, 124)
$Benutzer = GUICtrlCreateInput("Benutzer", 32, 32, 169, 21)
$Password = GUICtrlCreateInput("Password", 24, 64, 137, 21)
$Go = GUICtrlCreateButton("Go", 32, 112, 89, 25)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

Global $aUserPassword[10][2] = [['Benutzer1', 'Passwort1'], _
		['Benutzer2', 'Passwort2'], _
		['Benutzer3', 'Passwort3'], _
		['Benutzer4', 'Passwort4'], _
		['Benutzer5', 'Passwort5'], _
		['Benutzer6', 'Passwort6'], _
		['Benutzer7', 'Passwort7'], _
		['Benutzer8', 'Passwort8'], _
		['Benutzer9', 'Passwort9'], _
		['Benutzer10', 'Passwort10']]

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Go
			For $i = 0 To UBound($aUserPassword) - 1
				If GUICtrlRead($Benutzer) == $aUserPassword[$i][0] And GUICtrlRead($Password) == $aUserPassword[$i][1] Then
					MsgBox(0x40, 'Hi', 'OK')
					ExitLoop
				EndIf
			Next
	EndSwitch
WEnd
Beispiel-Benutzername: Benutzer1
Beispiel-Passwort: Passwort1

MfG
07/04/2013 15:31 .yorliK#1414
Ich hab mal ne Frage.. undzwar ist es ja so wenn man einen Button drückt, wird die Aufgabe die der Button besitzt nur 1-mal ausgeführt. Wie griegt man es hin wenn man z.B. ne Zahl "10" durch den Button runterzählen lassen will. Also so das wenn einmal geklickt wird auch nur eine Zahl runtergezählt wird und wenn der Button länger gedrückt wird er automatisch schon weiter runterzählt bis man den Button wieder los lässt. Und danach soll ein anderer Button wiederhochzählen ggf. wenn er über 10 ist disablen so dass man nicht über 10 kommen kann.


Edit:Habs schon so weit das die Buttons disabled werden falls 0 oder über 10 sodass nicht tiefer und höher gezählt werden kann.. nur komm ich nicht drauf wie man die Button gedrückthalten funktion hingriegt.
07/04/2013 16:07 -STORM-#1415
Das kommt drauf an, was genau du haben möchtest.

Grundsätzlich kannst du einfach in der Funktion eine For-Schleife machen, die 10 mal durchgegangen wird. Da machst du halt ein Sleep(1000) rein und verringerst die Zahl in jedem Durchgang um 1.
Code:
Func button()
	For $i= 1 To 10
		$zahl -= 1
		Sleep(1000)
	Next
EndFunc
Das Problem ist, dass in der Zeit nichts anderes gemacht werden kann.
Willst du gleichzeitig andere Befehle ausführen, kannst du eine Funktion machen, die die Zahl verringert und per AdlibRegister alle 1000ms ausführen.
Dann baust du noch mit AdlibUnregister ein, dass die Funktion nicht weiter aufgerufen wird, wenn die Zahl 0 erreicht.
Code:
AdlibRegister("button", 1000)

Func button()
	$zahl -= 1
	If $zahl = 0 Then AdlibUnRegister("button")
EndFunc
Die dritte Möglichkeit wäre, eine Variable zu machen, die angibt, ob der Button gedrückt wurde und einen Timer zu starten, wenn der Button gedrückt wird. Dann fragst du in der Main-Schleife des Scripts ab, ob der Button gedrückt wurde und wenn ja, ob 1000ms seit dem letzten Verringern der Zahl vergangen sind, verringerst sie ggf und setzt den Timer wieder auf 0.
Code:
$gedrueckt = False
$t = 0

While 1
	If $gedrueckt Then
		If TimerDiff($t) >= 1000 Then
			$zahl -= 1
			$t = TimerInit()
			If $zahl = 0 Then $gedrueckt = False
		EndIf
	EndIf
WEnd
	
	
Func button()
	$gedrueckt = TrayCreateItem
Next
PS: Da wo hier nur $zahl-=1 steht, musst du natürlich auch das entsprechende Label im GUI updaten.
07/04/2013 16:19 .yorliK#1416
Quote:
Originally Posted by -STORM- View Post
Das kommt drauf an, was genau du haben möchtest.

Grundsätzlich kannst du einfach in der Funktion eine For-Schleife machen, die 10 mal durchgegangen wird. Da machst du halt ein Sleep(1000) rein und verringerst die Zahl in jedem Durchgang um 1.

Das Problem ist, dass in der Zeit nichts anderes gemacht werden kann.
Willst du gleichzeitig andere Befehle ausführen, kannst du eine Funktion machen, die die Zahl verringert und per AdlibRegister alle 1000ms ausführen.
Dann baust du noch mit AdlibUnregister ein, dass die Funktion nicht weiter aufgerufen wird, wenn die Zahl 0 erreicht.


PS: Da wo hier nur $zahl-=1 steht, musst du natürlich auch das entsprechende Label im GUI updaten.
Der zählt jetzt runter richtig, aber er zählt auch weiter wenn der Button nicht mehr gedrückt ist.. ich hab mir da sowas ähnliches wie bei dem GuiCtrlCreateUpDown vorgestellt.
07/04/2013 16:44 -STORM-#1417
Den Button gedrückt zu halten, ist eigentlich nicht vorgesehen.
Indirekt könntest du das lösen, indem du abfragst, ob die Maustaste gedrückt ist, und wenn ja, ob der Zeiger sich über dem Button befindet.
07/04/2013 17:45 .yorliK#1418
Quote:
Originally Posted by -STORM- View Post
Den Button gedrückt zu halten, ist eigentlich nicht vorgesehen.
Indirekt könntest du das lösen, indem du abfragst, ob die Maustaste gedrückt ist, und wenn ja, ob der Zeiger sich über dem Button befindet.
Hab mal nen Code geschrieben:
Code:
$Form1 = GUICreate("DOUBLE FEED", 201, 70, -1, -1)
Opt("GUIOnEventMode", 1)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_GUI_EVENT_PRIMARYDOWN")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_GUI_EVENT_PRIMARYDOWN1")
Global $Button2 = GUICtrlCreateButton("+", 88, 40, 17, 17)
Global $Button3 = GUICtrlCreateButton("-", 104, 40, 17, 17)

Func _GUI_EVENT_PRIMARYDOWN()
While 1
	Sleep(100)
	If $x = "100" Then Exitloop
        If BitAND(_GUICtrlButton_GetState($Button2), $BST_PUSHED) = $BST_PUSHED Then
			$x += 1
	If GUICtrlRead($Label3) <> ("Sound: " & $x & "%") Then
		GUICtrlSetData($Label3, "Sound: " & $x & "%")
		$object.settings.volume = $x
	EndIf
			If $x = "100" Then Exitloop
        Else
            Return
        EndIf
    WEnd
EndFunc

Func _GUI_EVENT_PRIMARYDOWN1()
	While 1
		Sleep(100)
		If $x = "0" Then Exitloop
        If BitAND(_GUICtrlButton_GetState($Button3), $BST_PUSHED) = $BST_PUSHED Then
			$x -= 1
		If GUICtrlRead($Label3) <> ("Sound: " & $x & "%") Then
		GUICtrlSetData($Label3, "Sound: " & $x & "%")
		$object.settings.volume = $x
	EndIf
			If $x = "0" Then Exitloop
        Else
            Return
        EndIf
    WEnd
EndFunc

Func _Exit()
Exit
EndFunc
EDIT: Ich habs jetzt soweit das er nach unten zählt das Label flackert zwar aber egal.. nur zählt er nicht nach oben...
07/05/2013 14:15 YatoDev#1419
Quote:
Originally Posted by Achat View Post
@Requi
Das ist egal.


Msgbox(0,0,"String""xD")

MfG
übersicht und :
Code:
Msgbox(0,0,'String""xD')
07/05/2013 14:31 lolkop#1420
Quote:
Originally Posted by Kilroy. View Post
EDIT: Ich habs jetzt soweit das er nach unten zählt das Label flackert zwar aber egal.. nur zählt er nicht nach oben...
für dein problem gibt es guigetcursorinfo...
Code:
GUICreate('GUI', 200, 40, Default, Default, 0x10C80000)
$ctrlBtn = GUICtrlCreateButton('Press Me', 10, 10, 85, 20)
$ctrlLabel = GUICtrlCreateLabel(0, 105, 10, 85, 20, 0x1201)

While GUIGetMsg()<>-3
	$cursor = GUIGetCursorInfo()
	If $cursor[2] And $cursor[4]=$ctrlBtn Then GUICtrlSetData($ctrlLabel, GUICtrlRead($ctrlLabel)+1)
WEnd
07/05/2013 18:50 .yorliK#1421
Quote:
Originally Posted by lolkop View Post
für dein problem gibt es guigetcursorinfo...
Code:
GUICreate('GUI', 200, 40, Default, Default, 0x10C80000)
$ctrlBtn = GUICtrlCreateButton('Press Me', 10, 10, 85, 20)
$ctrlLabel = GUICtrlCreateLabel(0, 105, 10, 85, 20, 0x1201)

While GUIGetMsg()<>-3
	$cursor = GUIGetCursorInfo()
	If $cursor[2] And $cursor[4]=$ctrlBtn Then GUICtrlSetData($ctrlLabel, GUICtrlRead($ctrlLabel)+1)
WEnd
Jo klappt, nur bin ich jetzt überfragt wie ich das stop wenn das Label die 1000 oder die 0 erreicht hat O.o Exitloop geht nicht weil ich da noch andere Sachen in der While habe, und es kommt ne Fehlermeldung, wenn ich aufn Desktop klick. Habs schon mit Else Return versucht geht aber nich..
07/05/2013 19:48 KDeluxe#1422
Die "Fehlermeldung" lässt sich verhindern, indem du zusätzlich auf "Not @error" testest. Das mit dem Wert lässt sich mit einem einfachen If lösen.

Code:
GUICreate('GUI', 200, 40, Default, Default, 0x10C80000)
$ctrlBtn = GUICtrlCreateButton('Press Me', 10, 10, 85, 20)
$ctrlLabel = GUICtrlCreateLabel(0, 105, 10, 85, 20, 0x1201)

While GUIGetMsg()<>-3
	$labelValue = GUICtrlRead($ctrlLabel)
	If $labelValue < 1000 Then
		$cursor = GUIGetCursorInfo()
		If Not @error And $cursor[2] And $cursor[4]=$ctrlBtn Then GUICtrlSetData($ctrlLabel, $labelValue+1)
	EndIf
WEnd
07/06/2013 11:08 .yorliK#1423
Ja das funktioniert. Wieder was dazugelernt, vielen Dank!

noch eine nicht so dramatische Frage, manchmal wird das Label sofort auf 0 oder gleich 200 höher gesetzt wieso passiert das?

EDIT: Habs mit nem simplen Sleep(1) wegbekommen.

MfG
Kilroy.
07/06/2013 11:54 lolkop#1424
Quote:
Originally Posted by Kilroy. View Post
Ja das funktioniert. Wieder was dazugelernt, vielen Dank!

noch eine nicht so dramatische Frage, manchmal wird das Label sofort auf 0 oder gleich 200 höher gesetzt wieso passiert das?

EDIT: Habs mit nem simplen Sleep(1) wegbekommen.

MfG
Kilroy.
man baut doch kein zusätzliches sleep in die schleife ein, in der sich schon ein guigetmsg befindet <.<

arbeite mit timern, wenn du das ganze verlangsamen willst...
07/07/2013 14:45 evoh12#1425
Hallo,

ich habe mal wieder eine kleine Frage:
Und zwar möchte ich den Inhalt meiner 2 Input´s in Arrays speichern nur ich weiß nciht wie das gehen soll..

Ich habe es jetzt so versucht
PHP Code:
$Test[0][0] = $Input1
$Test
[0][1] = $Input2 
Nur dort wird mir immer der Wert 4 und 5 ausgegeben, obwohl ich in den Feldern 1 und 2 stehen habe.


PHP Code:
#include<IE.au3>
#include<Array.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>




#Region ### START Koda GUI section ### Form=c:\users\****\desktop\kodak autoit\forms\votetest1.kxf
$Form1_1 GUICreate("Form1"615438258131)
$Ueberschirft GUICtrlCreateLabel("Test1"208818128)
GUICtrlSetFont(-1144000"MS Sans Serif")
$Input1 GUICtrlCreateInput("1"407214521)
$Input2 GUICtrlCreateInput("2"4011214521)


GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


DIM $Test[1][2]
$Test[0][0] = $Input1
$Test
[0][1] = $Input2


_ArrayDisplay
($Test,"Kompletter Array"
Danke für eure Hilfe.