1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. ashadehigher

Beiträge von ashadehigher

  • If-Schleife in Funktion funktioniert nicht.

    • ashadehigher
    • 29. Januar 2017 um 06:16

    Hallo,
    habe gehofft das Problem alleine lösen zu können, komme aber nicht zum gewünschter Ergebnis und hoffe nun hier Hilfe zu bekommen.

    Ich habe eine GUI. 2 Inputboxen, Ein Button. Klickt man auf den Button so soll in der ersten Inputbox eine zufällige, gerundete Zahl zwischen 1 und 10 erscheinen. Das klappt auch soweit. Nun möchte ich aber, dass in der 2. Inputbox ebenfalls eine zufällige und gerundete Zahl angezeigt wird, sobald in der ersten Box die Zahl 1 erscheint. Das klappt nicht.

    Die funktion selbst funktioniert, wenn ich "If $MoeGLICHKEITINPUT1 = 1 Then" weglasse. natürlich ändert dann die 2. box auch bei jedem Buttonklick den Wert und nicht nur wenn Box1 eine "1" auswirft. Kann mir bitte jemand auf die Sprünge helfen? Wenn "If" nicht funktioniert, was nehme ich dann? Freue mich über jede Hilfe. Vielen Dank


    Bitte löschen, ich hab grad selbst den Fehler gefunden. Liegt wohl an der Uhrzeit

    C
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    
    
    
    
    
    
    $Form1 = GUICreate("TEST", 428, 74, 663, 199)
    $INPUT1 = GUICtrlCreateInput("INPUT 1", 64, 8, 241, 21)
    $INPUT2 = GUICtrlCreateInput("INPUT 2", 64, 40, 241, 21)
    $BUTTON = GUICtrlCreateButton("GET", 8, 8, 49, 21)
    
    
    
    
    WinSetOnTop("TEST", "", 1)
    GUISetState(@SW_SHOW)
    
    
    
    
    
    
    
    
    Dim $input1moeglichkeiten[100]
       $input1moeglichkeiten[001] = "Moeglichkeit 1 in INPUT 1"
       $input1moeglichkeiten[002] = "Moeglichkeit 2 in INPUT 1"
       $input1moeglichkeiten[003] = "Moeglichkeit 3 in INPUT 1"
       $input1moeglichkeiten[004] = "Moeglichkeit 4 in INPUT 1"
       $input1moeglichkeiten[005] = "Moeglichkeit 5 in INPUT 1"
       $input1moeglichkeiten[006] = "Moeglichkeit 6 in INPUT 1"
       $input1moeglichkeiten[007] = "Moeglichkeit 7 in INPUT 1"
       $input1moeglichkeiten[008] = "Moeglichkeit 8 in INPUT 1"
       $input1moeglichkeiten[009] = "Moeglichkeit 9 in INPUT 1"
       $input1moeglichkeiten[010] = "Moeglichkeit 10 in INPUT 1"
    
    
    Dim $input2moeglichkeiten[100]
       $input2moeglichkeiten[001] = "Moeglichkeit 1 in INPUT 2"
       $input2moeglichkeiten[002] = "Moeglichkeit 2 in INPUT 2"
       $input2moeglichkeiten[003] = "Moeglichkeit 3 in INPUT 2"
       $input2moeglichkeiten[004] = "Moeglichkeit 4 in INPUT 2"
       $input2moeglichkeiten[005] = "Moeglichkeit 5 in INPUT 2"
       $input2moeglichkeiten[006] = "Moeglichkeit 6 in INPUT 2"
       $input2moeglichkeiten[007] = "Moeglichkeit 7 in INPUT 2"
       $input2moeglichkeiten[008] = "Moeglichkeit 8 in INPUT 2"
       $input2moeglichkeiten[009] = "Moeglichkeit 9 in INPUT 2"
       $input2moeglichkeiten[010] = "Moeglichkeit 10 in INPUT 2"
    
    
    
    
    
    
    
    
    Func _TESTFUNKTION()
    
    
    		 $RandomNumber		    = Random (1,10)
    		 $RandomNumberRound   	= Round ($RandomNumber)
    
    
    		 $MoeGLICHKEITINPUT1	    = $input1moeglichkeiten[$RandomNumberRound]
    
    
    		 GUICtrlSetData($INPUT1, $MoeGLICHKEITINPUT1)
    
    
    		 If $MoeGLICHKEITINPUT1 = 1 Then
    		 $RandomNumber2		    = Random (1,10)
    		 $RandomNumberRound2   	= Round ($RandomNumber2)
    
    
    		 $MoeGLICHKEITINPUT2	    = $input2moeglichkeiten[$RandomNumberRound2]
    		 GUICtrlSetData($INPUT2, $MoeGLICHKEITINPUT2)
    		 EndIf
    EndFunc
    
    
    
    
    
    
    
    
    While True
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
            Case $BUTTON
                _TESTFUNKTION()
    
    
    
    
    	EndSwitch
    
    
    
    
    WEnd
    Alles anzeigen
  • Mehrere Variablen zusammensetzten mit Eval () - Fehler

    • ashadehigher
    • 7. März 2016 um 11:34

    Hat sich erledigt.
    Richtig ist Local $fulldir = $DIR" & $Counter & $DIR2

    ohne ""

    Danke für die Denkanstöße :)

  • Mehrere Variablen zusammensetzten mit Eval () - Fehler

    • ashadehigher
    • 7. März 2016 um 11:14

    Morgen,
    danke schon mal für die Antworten.

    Ohne Eval funktioniert es leider auch nicht. Es kommt die Meldung, dass "$DIR1$Counter$DIR2" nicht gefunden werden konnte. Einfach nur ShellExecute funktioniert bei mir auch. Es werden Verknüpfungen zu Chrome-Profilen geöffnet. Allerdings möchte ich der Übersicht halber nicht 5 solcher Absätze (da 5 Profile) sondern nur einen. Im Pfad selbst ändert sich wie gesagt auch nur die Zahl. Wie hier jetzt die "2" hinter Chrome.

    Code
    ShellExecute ( "C:\Users\blabla\chrome2.lnk", "https://www.google.com")
    Sleep (2000)
  • Mehrere Variablen zusammensetzten mit Eval () - Fehler

    • ashadehigher
    • 7. März 2016 um 10:15

    Hi Leute,
    habe ein kleines Problem bezüglich der Eval-Funktion. Ich möchte gerne 3 Variablen zu einer zusammensetzen. Mein Script soll mehrere Anwendungen nacheinander öffnen. Der Link zur Anwendung ist abgesehen von einer Zahl immer gleich. Diese Zahl möchte ich gern durch einen Zähler verändern. Hier erst mal mein Script:

    Code
    If $nMsg = $RunChrome Then
       $Counter = 1
       $DIR1    = "C:\Users\blabla\chrome"
       $DIR2    = ".lnk"
    
    
       While True
    
    
       Local $fulldir = Eval("$DIR1" & "$Counter" & "$DIR2")
       ShellExecute ( $fulldir, "https://www.google.com")
       $Counter += 1
    
    
       WEnd
    Alles anzeigen

    Der Pfad zur Anwendung soll als $fulldir aus $DIR1, $Counter und $DIR2 erzeugt werden. $Counter fängt bei 1 an. Ist auch richtig so. Der Pfad ist sieht auch so aus: "C:\Users\blabla\chrome1.lnk". Aber anstatt die anwendung zu öffnen wird das verzeichnis geöffnet. Weiss jemand woran das liegen könnte? LG und Danke

  • Fehler in simpler GUI ?

    • ashadehigher
    • 3. März 2016 um 12:43

    Yeha! Vielen Lieben Dank! Da wäre ich nie drauf gekommen :)

  • Fehler in simpler GUI ?

    • ashadehigher
    • 3. März 2016 um 12:27

    Hi Leute,
    heute stehe ich wieder einmal vor einem Problem, dass ich trotz Forum und Google nicht lösen kann. Vielleicht kann mir einer von euch auf die Sprünge helfen.

    Ich habe ein kleines Script geschrieben, dass eine Internetseite in einem bestimmten Chrome-Profil öffnet. Es funktioniert alles ohne Probleme. Nun habe ich gestern zum ersten Mal mit dem Thema GUI und Koda auseinander gesetzt. Ich habe eine GUI erstellt, die nur eine Inputbox und einen Button enthält. Ganz simpel eben. In der Inputbox steht der Link zur Internetseite. Der Button startet die Funktion. Ohne GUI funktioniert es ohne Probleme. Doch mit GUI wird Chrome nicht mit der angegebenen Adresse, sondern mit "http://0.0.0.3/" geöffnet. Das verwirrt mich. Ich weiss nicht woher er sich diese Zahlen holt. Ich hoffe nun, dass jemand von euch mir meinen Fehler aufzeigen kann.

    So siehts aus:

    C
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 437, 192, 124)
    $url = GUICtrlCreateInput("http://", 8, 8, 593, 21)
    $Button1 = GUICtrlCreateButton("In Chrome öffnen", 120, 32, 193, 49)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
            Switch $nMsg
    	Case $GUI_EVENT_CLOSE
    	Exit
        	Case $Button1
    	_Func1 ()
    	EndSwitch
    WEnd
    Func _Func1 ()
    ShellExecute ( "C:\Users\blabla\chromeprofiles\chrome1.lnk", $url)
    Sleep (200)
    WinSetState ( "", "", @SW_MAXIMIZE)
    Exit
    EndFunc
    Alles anzeigen

    Und zum vergleich hier noch einmal ohne GUI, nur mit einfacher Abfrage zu Beginn - und ohne Fehler:

    Code
    $url = Inputbox ("Seite", "Adresse eingeben", "http://")
    ShellExecute ( "C:\Users\blabla\chrome1.lnk", $url)
    Sleep (200)
    WinSetState ( "", "", @SW_MAXIMIZE)

    Verstehe ich nicht. Freue mich über jeden konstruktieren Beitrag :) LG

  • Random ohne Wiederholung - Wie geht's am einfachsten?

    • ashadehigher
    • 18. November 2015 um 18:58

    Moin Moin,
    ich beschäftigt das Thema nach wie vor. Mit dem Script von minx konnte ich gut was anfangen. Danke dafür :)

    Code
    #include <Array.au3>
        ; Funktion testen
        Local $aTest[Null]
        For $iN = 1 To 230
        	_ArrayAdd($aTest, _Random(1, 230, 1))
        Next
        ; Random funktion (selber Syntax wie AutoIt).
        Func _Random($iMin = 0, $iMax = 230, $iInt = 0)
        	Local Static $n
        	Local $t = [$iMin-1, UBound($n), $iMin-1]
        	If $t[1]+1 > $iMax Then Return SetError(1, 0, -1)
        	If UBound($n) Then
        		While $t[0] = $t[2]
        			$t[0] = Random($iMin, $iMax, $iInt)
        			For $k = 0 To $t[1]-1
        				$t[0] = $n[$k] = $t[0] ? $t[2] : $t[0]
        			Next
        		WEnd
        		ReDim $n[$t[1]+1]
        		$n[$t[1]] = $t[0]
        		Return $n[$t[1]]
        	EndIf
        	Local $t = [Random($iMin, $iMax, $iInt)]
        	$n = $t
        	Return $n[0]
        EndFunc
    _ArrayDisplay($atest)
    Alles anzeigen


    Ich habe leider nicht wirklich einen Plan davon, daher kann meine folgende Frage vielleicht blöd sein. Die Nummern (1-230) werden jetzt durcheinander und ohne Wiederholung durch _ArrayDisplay in einer Art Tabelle angezeigt (Entschuldigt meinen Ausdruck, ich bin halt wirklich kein Fachmann). Ist es möglich nur eine Zahl aus einer definierten Zeile dieser "Tabelle" anzeigen zu lassen? Also nicht _ArrayDisplay($atest) sonder _ArrayDisplay($??????) ? Ich hoffe ihr versteht was ich meine. :/

  • Random ohne Wiederholung - Wie geht's am einfachsten?

    • ashadehigher
    • 9. November 2015 um 13:39

    Ah ok, verstanden. Die Schleife habe ich mal weggelassen.
    Könntest du mir bitte den gefallen tun und mir in dein Script eine msgbox einbauen, die die Randomzahl als array wiedergibt?
    Komme da leider noch nicht so ganz hinter. Wäre super nett :)

  • Random ohne Wiederholung - Wie geht's am einfachsten?

    • ashadehigher
    • 9. November 2015 um 13:02

    Ah sehr cool. Danke schon mal für die schnelle Hilfe.

    Sehe ich das richtig, dass ich bei $iBis in Zeile 1 meine 230 eintrage? Und die wiederholungsfreie, erzeugte Zahl ist dann $sOut oder?

    Code
    While True
    Func _RandomExt($iBis=230, $iVon=1, $iAnzahl=-1, $array=0)
    	Local $count = $iBis -$iVon +1
    	If $iAnzahl = -1 Then $iAnzahl = $count
    	Local $aValue[$count], $start = $iVon, $sOut = '', $random
    	For $i = 0 To $count -1
    		$aValue[$i] = $start
    		$start += 1
    	Next
    	For $i = 0 To $iAnzahl -1
    		$random = Random(0, $count -1 -$i, 1)
    		$sOut &= $aValue[$random] & ','
    		$aValue[$random] = $aValue[$count -1 -$i]
    	Next
    	$sOut = StringTrimRight($sOut, 1)
    	If $array Then Return StringSplit($sOut, ',', 2)
    	Return $sOut
    EndFunc  ;==>_RandomExt
    $generatedname	= $name[$sOut]
    $generatedtodo	= $todo[$sOut]
    Wend
    Alles anzeigen

    Wenn ich nun das Script teste, kommt die Meldung:

    Code
    Func_RandomExt($iBis=230, SiVon=1, $iAnzahl=-1, $array=0)
    Error: "While" statement has no matching "Wend" statement.

    Aber Wend hab ich da doch stehen. Muss der Quellcode an einer anderen Stelle eingefügt werden? Vor "While True" macht doch auch kein Sinn.

    Vielleicht stehe ich auch nur auf dem Schlauch ;)

  • Random ohne Wiederholung - Wie geht's am einfachsten?

    • ashadehigher
    • 9. November 2015 um 11:31

    Hallo Leute,

    welche Möglichkeiten gibt es, eine einfache Random-Funktion (wie diese hier:)

    Code
    $rndnumber = Random(1, 230, 1)

    so umzuschreiben, dass sie keine Wiederholungen tätigt? Ich benutze sie in einer While-Schleife und es ist nur eine Frage der Zeit, bis sich die Zufallszahl wiederholt. Man könnte die zufällige Zahl (also den Wert von $rndnumber) in einer externen Datei speichern und zu Beginn der nächsten Runde in der While-Scheife zuerst abfragen ob der Wert in der externen Datei bereits vorhanden ist - und dann mit IF arbeiten. Man davon abgesehen, dass ich gar nicht wüsste, wie ich an sowas ran gehen sollte, scheint mir dies doch ziemlich komplizierz. (ich bin nicht so erfahren mit der Thematik). Gibt es vielleicht einfachere Möglichkeiten mein Ziel zu realisieren? Würde mich sehr über kostruktive Beiträge freuen. Vielen Dank.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™