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. Yjuq

Beiträge von Yjuq

  • Bild in Script einfügen

    • Yjuq
    • 1. Juni 2013 um 17:53
    Zitat von "masterRobb"

    Also ehrlich gesagt verstehe ich damit immer noch nichts - 160 Zeilen Quellcode mit viel Kram den ich nicht kenne ist für mich keine Große Hilfe :D

    Woher sollen wir denn wissen was du kannst und auch verstehst?
    UEZ hat dir eine Seite verlinkt wo das geschrieben steht was du suchst.
    Allerdings liegt es jetzt bei DIR das ganze durch zu arbeiten.

    Du hast aber auch noch die Möglichkeit deine Bilder einfach im Temp Ordner zwischen zu speichern und von dort aus zu laden wenn dir das einfacher fällt.
    Hier ein Beispiel um Bilder zwischen zu speichern: http://pastebin.de/34434

    Hier nochmal die einzelnen Schritte:
    1.: Die Datei (in deinen Fall Bilder) werden in Binärdaten gelesen und im Skript hinterlegt
    2.: Die Dateien werden zwischengespeichert im Temp Ordner
    3.: Nun kannst du die Dateien beliebig aufrufen

    Die Beispiele von UEZ zeigen (hab nur überflogen) wie man sie direkt aus dem Skript liest.
    Genauer gesagt direkt aus dem RAM.

    Und jetzt: Setz dich ran und lerne! :D

  • Algorithmus zum Spiel "PrimeGame"

    • Yjuq
    • 1. Juni 2013 um 13:03
    Zitat von "Andy"

    [...] wenn ich das richtig verstehe, und Spieler1 eine 12 zieht, dann werden Spieler2 die Zahlen (Teiler) 1,2,3,4,6 also in Summe 16 gutgeschrieben....

    Das hast du so richtig verstanden. Allerdings werden nur die Teiler gutgeschrieben, die sich noch in der Zahlenmenge befinden.

    Ich war mal so frei und habe eine Simulation des Spieles programmiert. Über den Programmierstil lässt sich sicherlich streiten, aber es funktioniert soweit. Ich habe 4 Algorithmen eingebaut:
    Spieler 2: Zieht Primzahlen wenn vorhanden oder kleinste Zahl.
    Spieler 3: Zieht Random Zahlen
    Mein erster KI Vorschlag
    Mein zweiter KI Vorschlag

    Spieler 1 habe ich nicht eingebaut, weil es nicht möglich ist immer NUR Primzahlen zu ziehen. Irgendwann sind alle Primzahlen weg. Und bei Spieler 4 wusste ich keinen Ansatz.

    Ich habe folgende Funktionsnamen vergeben:
    _PlayerOne (Spieler 2)
    _PlayerTwo (Spieler 3)
    _MyKIOne (erster KI Vorschlag)
    _MyKITwo (zweiter KI Vorschlag)

    Ich habe die Algo's gegeneinander antreten lassen. Ich habe _PlayerTwo ganz bewusst weggelassen damit kein Zufall den Spielfluss stören kann. Den Algo den ich zuerst immer nenne hat in dem Spiel begonnen. Hier die Ergebnisse bei einem Spiel von 1 bis 20 Zahlen:

    Spoiler anzeigen
    Code
    _PlayerOne vs. _MyKIOne     _MyKIOne vs. _PlayerOne
    39 Punkte < > 16 Punkte     20 Punkte < > 35 Punkte
    
    
    _PlayerOne vs. _MyKITwo     _MyKITwo vs. _PlayerOne
    34 Punkte < > 21 Punkte     21 Punkte < > 34 Punkte
    
    
     _MyKIOne vs. _MyKITwo       _MyKITwo vs. _MyKIOne
    34 Punkte < > 21 Punkte     21 Punkte < > 34 Punkte
    
    
    
    
    
    
    _PlayerOne >> 4 Siege
    _MyKIOne   >> 2 Siege
    _MyKITwo   >> 0 Siege
    Alles anzeigen

    Das verwundert mich gerade ein wenig... (Kann aber auch sein das ich iwo nen Fehler in den Algo's drin hab ^^)
    Aber ich würde mal schätzen wenn man eine Kombination aus den Algo's bauen würde, dann wäre diese noch besser.
    Ich selber habe noch keine weitere Idee...

    Hier das Skript zum ausprobieren:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $i, $aiNumbers[10], $bPlayer, $iIndex, $aiPoints[2]

    [/autoit] [autoit][/autoit] [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ +++++ ++++ +++ ++ +

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($aiNumbers) - 1
    $aiNumbers[$i] = $i + 1
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ +++++ ++++ +++ ++ +

    [/autoit] [autoit][/autoit] [autoit]

    $bPlayer = Random(0, 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    While UBound($aiNumbers)
    Switch $bPlayer
    Case True ; One
    ;~ $iIndex = _PlayerOne($aiNumbers)
    ;~ $iIndex = _PlayerTwo($aiNumbers)
    ;~ $iIndex = _MyKIOne($aiNumbers)
    ;~ $iIndex = _MyKITwo($aiNumbers)
    Case False ; Two
    ;~ $iIndex = _PlayerOne($aiNumbers)
    ;~ $iIndex = _PlayerTwo($aiNumbers)
    ;~ $iIndex = _MyKIOne($aiNumbers)
    ;~ $iIndex = _MyKITwo($aiNumbers)
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    $aiPoints[Not $bPlayer] += _GetPoints($aiNumbers, $iIndex, True)
    $aiPoints[$bPlayer] += _GetPoints($aiNumbers, $iIndex)
    $bPlayer = Not $bPlayer
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite('> One: ' & $aiPoints[0] & @CRLF & _
    '! Two: ' & $aiPoints[1] & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ +++++ ++++ +++ ++ +

    [/autoit] [autoit][/autoit] [autoit]

    ; Zieht größte Primzahl
    ; Wenn nicht vorhanden dann kleinste Zahl
    Func _PlayerOne($aiNumbers)
    Local $i, $n, $b

    [/autoit] [autoit][/autoit] [autoit]

    For $i = UBound($aiNumbers) - 1 To 1 Step - 1
    For $n = $aiNumbers[$i] - 1 To 1 Step - 1
    If IsInt($aiNumbers[$i] / $n) Then $b = True
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If Not $b Then Return $i
    $b = False
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; Zieht eine zufällige Zahl
    Func _PlayerTwo($aiNumbers)
    Return Random(0, UBound($aiNumbers) - 1, 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ +++++ ++++ +++ ++ +

    [/autoit] [autoit][/autoit] [autoit]

    ; Zieht größt mögliche Zahl ohne Teiler in der Zahlenmenge
    Func _MyKIOne($aiNumbers)
    Local $i, $n, $b

    [/autoit] [autoit][/autoit] [autoit]

    For $i = UBound($aiNumbers) - 1 To 1 Step - 1
    For $n = $i - 1 To 0 Step - 1
    If IsInt($aiNumbers[$i] / $aiNumbers[$n]) Then $b = True
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If Not $b Then Return $i
    $b = False
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; Zieht die Zahl welche den größten Punktevorteil erbringt
    Func _MyKITwo($aiNumbers)
    Local $i, $aiTeiler, $n, $iTempP, $iSaveP, $iSaveI

    [/autoit] [autoit][/autoit] [autoit]

    For $i = UBound($aiNumbers) - 1 To 1 Step - 1
    Dim $aiTeiler[1]
    For $n = $i - 1 To 0 Step - 1
    If IsInt($aiNumbers[$i] / $aiNumbers[$n]) Then
    _ArrayAdd($aiTeiler, $aiNumbers[$n])
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $iTempP = $aiNumbers[$i]
    For $n = 1 To UBound($aiTeiler, $n) - 1
    $iTempP -= $aiTeiler[$n]
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If $iTempP > $iSaveP Then
    $iSaveI = $i
    $iSaveP = $iTempP
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return $iSaveI
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ +++++ ++++ +++ ++ +

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetPoints(ByRef $aiNumbers, ByRef $iIndex, $bTeiler = False)
    Local $iReturn, $i

    [/autoit] [autoit][/autoit] [autoit]

    If Not $bTeiler Then
    $iReturn = $aiNumbers[$iIndex]
    _ArrayDelete($aiNumbers, $iIndex)
    Return $iReturn
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    While $i < $iIndex
    If IsInt($aiNumbers[$iIndex] / $aiNumbers[$i]) Then
    $iReturn += $aiNumbers[$i]
    _ArrayDelete($aiNumbers, $i)
    $iIndex -= 1
    $i -= 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $i += 1
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Return $iReturn
    EndFunc

    [/autoit]
  • Algorithmus zum Spiel "PrimeGame"

    • Yjuq
    • 31. Mai 2013 um 16:31
    Spoiler anzeigen

    Also...
    Ich würde meine unbesiegbare KI einfach die größte Zahl aus der Zahlenmenge ziehen lassen welche keinen Teiler besitzt. So würde der Gegner nie Punkte bei einem Zug der KI bekommen. So ist es schon unmöglich zu gewinnen, weil die größten Zahlen einfach von der KI weggeschnappt werden. Und jede andere Zahl die dann der Spieler zieht bekommt dann meine KI.

    Ich habe hier auch eine Spielrunde mit den Zahlen 1 bis 20 niedergeschrieben. Der Spieler zieht immer eine zufällige Zahl (habe ich mit Random in AutoIt gemacht) und die KI wie oben beschrieben:


    Code
    Runde 1:   1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
    Sp: 1   (KI bekommt 0 Punkte) | 1
    KI: 19 | 19
    
    
    Runde 2:   2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20
    Sp: 9   (KI bekommt 3 Punkte) | 1 + 9
    KI: 17 | 19 + 3 + 17
    
    
    Runde 3:   2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 20
    Sp: 20   (KI bekommt 10 + 5 + 4 + 2 Punkte) | 1 + 9 + 20
    KI: 15   (5 ist durch Sp weg) | 19 + 3 + 17 + 10 + 5 + 4 + 2 + 15
    
    
    Runde 4:   6, 7, 9, 11, 12, 13, 14, 17, 18
    Sp: 12   (KI bekommt 6 Punkte) | 1 + 9 + 20 + 12
    KI: 18   (6 ist durch SP weg) | 19 + 3 + 17 + 10 + 5 + 4 + 2 + 15 + 6 + 18
    Alles anzeigen


    Ich glaube ich brauche das hier nicht weiter ausführen. Wie man sieht hat meine KI die meisten Punkte durch den Spieler erhalten und sich die höchst Mögliche Zahl geschnappt, ohne den Gegner auch nur einen Punkt zu überlassen.

    Ich möchte meine Idee jetzt nicht mathematisch belegen. Wäre mir zu viel Aufwand das ganze tatsächlich zu berechnen...

    €dit:
    Mir ist gerade ein noch viel besserer Algorithmus eingefallen. Man berechnet den tatsächlichen Punktetechnischen Vorteil den eine Zahl einbringt. Dafür subtrahiert man alle noch vorhandenen Teiler der Zahlenmenge durch die gewählte Zahl. Das Endergebnis liefert einen tatsächlichen Punktevorsprung. Die Zahl die den größten Punktevorsprung bringt, ist die Zahl welche der Algorithmus wählt.

    Nehmen wir einmal an folgende Zahlen wären noch in der Zahlenmenge: 3, 5, 7, 12, 14

    Nun wird zuerst der Punktevorsprung für die Zahl 14 gesucht. Der einzige Teiler wäre die Zahl 7. Also ist der Punktevorsprung 14 - 7 Punkte. Hier eine Liste für alle 5 Zahlen:

    Code
    Zahl 14:   14 - 7 = 7
    Zahl 12:   12 - 3 = 9
    Zahl 7:     7 - 0 = 7
    Zahl 5:     5 - 0 = 5
    Zahl 3:     3 - 0 = 3

    Die Zahl 12 hat den größten Punktevorsprung. Also ist dies die Zahl welche am meisten Sinn macht zu wählen. Ich hoffe es ist so verständlich. :P


    Ich hoffe ich konnte dir damit weiter helfen! LG. Make ^^

  • hab ein problem eine schleife anzusprechen

    • Yjuq
    • 30. Mai 2013 um 23:41

    Das Problem liegt an dem Sleep(20000) in der Schleife...
    Ich gehe davon aus das du das Programm nicht schließen kannst wenn die MsgBox angezeigt wurden.

    Alternativ wäre es sinnvoll mit Timern zu arbeiten, damit das Programm auch auf die klicke reagieren kann.
    Notfalls im OnEventMode...

    Hier einmal mit der Message Schleife:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGUI, $idButtonStart, $idButtonAus, $iGMsg, $bLoop, $iNumber, $hTimer

    [/autoit] [autoit][/autoit] [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate('Example', 600, 400)
    $idButtonStart = GUICtrlCreateButton('Start', 0, 367, 150, 33)
    $idButtonAus = GUICtrlCreateButton('Aus', 450, 367, 150, 33)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit] [autoit][/autoit] [autoit]

    While True
    $iGMsg = GUIGetMsg()

    [/autoit] [autoit][/autoit] [autoit]

    Switch $iGMsg
    Case $idButtonStart
    $bLoop = True
    Case $GUI_EVENT_CLOSE, $idButtonAus
    If $iGMsg = $idButtonAus Then Sleep(2000) ; Gleicher Effekt wie die Funktion aus()
    Exit
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    If $iNumber >= 9 And $bLoop Then
    $hTimer = TimerInit() ; Timer initialisieren
    $iNumber = 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If Not TimerDiff($hTimer) Or TimerDiff($hTimer) >= 20000 And $bLoop Then
    MsgBox(0, '', $iNumber)
    $iNumber += 1
    EndIf
    WEnd

    [/autoit]

    Gleiches Skript nur im OnEventMode: (Hier kann der Timer beruhigt weggelassen werden)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGUI, $idButtonStart, $idButtonExit, $bLoop, $iNumber

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)
    Opt('GUICloseOnESC', 0)

    [/autoit] [autoit][/autoit] [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate('Example', 600, 400)
    $idButtonStart = GUICtrlCreateButton('Start', 0, 367, 150, 33)
    $idButtonAus = GUICtrlCreateButton('Aus', 450, 367, 150, 33)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetOnEvent($idButtonStart, '_Start')
    GUICtrlSetOnEvent($idButtonAus, '_Aus')
    GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI_EVENT_CLOSE')
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit] [autoit][/autoit] [autoit]

    While Sleep(10)
    If $iNumber >= 9 And $bLoop Then
    Sleep(20000)
    $iNumber = 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $bLoop Then
    MsgBox(0, '', $iNumber)
    $iNumber += 1
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit] [autoit][/autoit] [autoit]

    Func _Start()
    $bLoop = True
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Aus()
    Sleep(2000)
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func GUI_EVENT_CLOSE()
    Exit
    EndFunc

    [/autoit]


    €dit: Hab mir wohl ein bischen zu viel Zeit gelassen beim tippen... :D

  • Script zusammen fügen

    • Yjuq
    • 26. Mai 2013 um 23:03

    Du rufst die Funktion _generateKey() im Skript immer mit 2 Parametern auf.
    Allerdings hast du bei der definition deiner Funktion keine Parameter vorgesehen.

    Dein Fehler: Du rufst eine Funktion mit Parametern auf,
    welche eigentlich keine Parameter entgegen nimmt.

    LG. Make :)

  • Dynamische Namen für Array Variablen

    • Yjuq
    • 21. Mai 2013 um 22:01

    Es gibt 2 Möglichkeiten:

    Spoiler anzeigen
    [autoit]

    Local $aOne[3], $aTwo[3], $aThree[2], $aTemp, $vElement

    [/autoit] [autoit][/autoit] [autoit]

    $aOne[0] = 1
    $aOne[1] = 2
    $aOne[2] = 3

    [/autoit] [autoit][/autoit] [autoit]

    $aTwo[0] = 4
    $aTwo[1] = 5
    $aTwo[2] = 6

    [/autoit] [autoit][/autoit] [autoit]

    $aThree[0] = $aOne
    $aThree[1] = $aTwo

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $aTemp = $aThree[0]
    ConsoleWrite($aTemp[0] & @CRLF & _
    $aTemp[1] & @CRLF & _
    $aTemp[2] & @CRLF & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    For $vElement In $aThree[1]
    ConsoleWrite($vElement & @CRLF)
    Next

    [/autoit]
  • Alles Gute PainTain

    • Yjuq
    • 21. Mai 2013 um 19:06

    Jetzt muss ich aber auch mal gratulieren ^^
    Alles gute zum Geburstag!

    Habe schon für dich gefeiert!
    Die Tochter meiner Partentante hatte nämlich heute auch Geb. ;D

  • FileOpenDialog

    • Yjuq
    • 19. Mai 2013 um 02:30

    Du hast im String vergessen die Klammer wieder zu schließen...
    "Bilddatein(*.jpg;*.png;*.bmp"

    Eine Klammer fehlte:
    "Bilddatein(*.jpg;*.png;*.bmp)"

  • Variable "variabel" machen

    • Yjuq
    • 17. Mai 2013 um 22:04

    Hier ein Beispiel wie es ohne Array bzw. Dictionary funktioniert:

    Spoiler anzeigen
    [autoit]

    Local $Spalte1 = "NACHWEIS NR"
    Local $Spalte2 = "NACHWEIS ID"
    Local $Spalte3 = "VORLÄUFIGE NR"
    ;....
    Local $Spaltenanzahl = 3

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $Spaltenanzahl
    $sInhalt = Eval("Spalte" & $i)
    ConsoleWrite("! Spalte" & $i & " = " & $sInhalt & @CRLF)
    Next

    [/autoit]
  • Pushover per CURL (?)

    • Yjuq
    • 16. Mai 2013 um 22:38

    Okey, ich muss hier gestehen dass ich tatsächlich noch nie was von cURL gehört habe.
    Allerdings habe ich mich dazu ein wenig schlau gemacht.

    So wie ich deine Frage verstanden habe, willst du so etwas wie API von Pushover nutzen.
    In diesen Fall willst du cURL verwenden. Ist das so korrekt?

    Wie ich gelesen habe ist cURL eine Kommandozeilen Anwendung. Du kannst diese also mit "Run" starten und die entsprechenden Kommandozeileparametern mitliefern. Das sieht in etwa so aus:

    [autoit]

    Run("Programm.exe Parameter1 Parameter2")

    [/autoit]

    Wenn du schon bereits mit cURL umgehen kannst, dann sollte das kein Problem werden.

    LG. Make :)

  • inputbox und Dateistring vergleichen

    • Yjuq
    • 16. Mai 2013 um 22:24

    Setz das Thread doch bitte auf [ gelöst ] ja?
    Dafür einfach den ersten Post editieren!

    Dankeschön :)

  • inputbox und Dateistring vergleichen

    • Yjuq
    • 15. Mai 2013 um 22:04

    >> AutoIt.de - Das deutsche AutoIt-Forum » AutoIt 3 » Hilfe & Unterstützung <<

    Du bist hier in H&U...
    Vielleicht wäre es ganz sinnvoll selber mal das aufzuschreiben, was du dir schon selber erarbeitet hast.

    Beispielsweise:
    -> Ein Pseudocode
    -> Ein Skript wo du es selber versuchst
    -> Deine Gedanken

    Ich möchte dich hier nur einmal darauf hinweisen, dass das so rüber kommt als ob wir für dich deine Arbeit machen sollen. Zumindestens geht das mir so...
    Wenn du keine Gedankenansätze hast, dann schreib das bitte dazu!
    Ich will dir nicht zu nahe treten, aber es war auch schon so bei deinen 2 letzten (und einzigsten) Threads hier.


    Nun zu dein Problem:
    Du schreibst es ja schon quasi nieder...
    Du brauchst eine Funktion welche Zeilenweise deine Textfiles einliest und dann vergleicht.

    Spoiler anzeigen
    [autoit]

    FileReadLine()
    _FileCountLines() ; Für FileReadLine()
    _FileReadToArray()

    [/autoit]

    Ich würde dir _FileReadToArray() empfehlen, weil du dann einfach in einer For Schleife das Array durchgehen und vergleichen kannst. Wenn du auf Groß und Kleinschreibung achten willst, verwende für den Vergleich 2 Gleichheitszeichen: "a" == "A"

    Damit solltest du es selber hin bekommen. Sollten weitere Fragen oder Probleme aufkommen, bin ich gerne bereit dir zu helfen! :D
    Aber ich möchte vor allem auch sehen, dass du es zumindest selber versuchst. Warum soll denn was machen wenn du selber nichts machst?
    (Soll keine Unterstellung sein! Habe es nur so formuliert dass du siehst was ich meine :P)

  • Register/Login Script [AutoIt]

    • Yjuq
    • 11. Mai 2013 um 13:57
    Zitat von &quot;sezer0012&quot;

    [...] Das ist mein erstes richtiges AutoIt Script [...]

    Kurz und knapp: Für dein aller erstes ist es ein guter Anfang. :)

    Erst einmal Skripttechnisch:
    Du brauchst unbedingt einen sauberen Programmierstil! Besonders wenn die Skripte länger werden wirst DU irgendwann den Überblick verlieren. Zudem lässt sich das Skript so wie es jetzt ist wirklich schlecht in ein vorhandenes Projekt einbauen.
    Aber auch mal was positives: Wie ich sehe verschlüsselst du das Passwort ja mit _StringEncrypt(). Du verwendest als Passwort das Passwort, was der User sich ausgesucht hatte. Keine schlechte Idee! Vor allem weil dann auch die Passwortabfrage universell möglich ist und ein Passwort zum entschlüsseln nirgens im Skript hinterlegt ist.

    Funktionstechnisch:
    Es läuft alles wie gewünscht! Habe bisher keine Bug's oder Nebenwirkungen gefunden. :D

    Designtechnisch:
    Für dein erstes Skript sieht das Design ja noch gar nicht mal so schlecht aus. Schlicht, einfach und nicht besonders groß auffallend. Wirklich sehr nett! :)

    Fazit: Überarbeite nochmal dein Skript und versuch mal das umzusetzen was chessi in seinen Tutorial erklärt. Joriktos hat es ja in Post #2 bereits verlinkt. Wenn du es dann tatsächlich überarbeitest, lade die neue Version doch dann bitte hier hoch! ^^

    €dit:
    Was ich gerade gefunden habe: Bewerbung Maker v1
    Zählst du das nicht zu deinen geschriebenen Skripten mit?

  • Identifikation von Fenstern mit gleichen AU3-Infos anhand mehrerer Parameter? Möglichkeit der Identifikation durch Ausschließen von Parametern?

    • Yjuq
    • 9. Mai 2013 um 12:43

    Ich hätte da noch paar Ansätze, allerdings fehlen mir noch wichtige Informationen:
    - Haben die Fenster unterschiedliche Positionen?
    -> Wenn ja: Sind die Fensterpositionen zufällig irgendwo gespeichert für den nächsten Programmstart?
    - Beinhalten sie unterschiedliche Controls worüber sie idenfizierbar wären?
    - Unterscheiden sie sich farblich voneinander?

    Liste am besten ALLE unerschiede auf die du an deinen Fenstern finden kannst. Es gibt noch zich Möglichkeiten um eines dieser Fenster anzusprechen! Screenshots wären wirklich nicht schlecht...

  • Gdi + Speicherprobleme?

    • Yjuq
    • 8. Mai 2013 um 22:21

    @chess:
    _GDIplus_StartUp() und _GDIPlus_Shutdown() kann man gefahrenlos auch mehrmals verwenden. Es ist also auch sowas hier möglich:

    [autoit]

    For $i = 1 To 100
    _GDIPlus_StartUp()
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To 100
    _GDIPlus_Shutdown()
    Next

    [/autoit]

    Tatsächlich wird GDI+ nur ein einzigstes mal gestartet, denn intern achtet die Funktion schon selber wie oft sie aufgerufen bzw. Beendet wurde. GDI+ startet sich nur beim ersten Aufruf von selber und beendet sich tatsächlich erst wieder, wenn die gleiche Anzahl an Shutdowns vorhanden ist.

  • Unvergessliche Geschichten/About your life

    • Yjuq
    • 8. Mai 2013 um 13:33

    Dann will auch ich mal eine meiner Geschichten loswerden. Zwar nicht so spannend wie chessi seine aber trotzdem Erzählenswert.

    Spoiler anzeigen

    Ich habe vor etwa einem Jahr ein tolles Mountainbike zum Geburtstag bekommen. Da beschloss ich das Wochenende darauf mit 2 Kumpels eine kleine Action Rally zu veranstalten. Wir sind in den nahegelegenen Wald gefahren (ziemlich tief, keine Ahnung wo wir waren ^^) und hatten uns ein Start und Zielpunkt festgelegt. Dabei gab es keine Wege oder Trampelpfade, nur Bäume und Sträucher. Wir sind also den Abhang hinunter Gefahren durch das Gestrüpp. Die Rally war ganz in Ordnung und ist soweit nichts passiert. Wir waren auf den Weg nach Hause aber irgendwie sind wir auf einen größeren Berg gelandet. Ich sah wie der Berg in einen etwa 50° Winkel nach unten führte. Die Strecke nach unten ist geschätzt etwa 250 Meter lang. Ich kam also auf die Waghalsige Idee da runter zu brettern. Überall auf den Abhang lagen dicke Äste und Steine. Ganz unten fand sich ein Fluss vordem ein einfacher Holzzaun aufgestellt war. Jedenfalls feuerten mich schon meine beiden Kumpels an und ich trat kräftig in die Pedale. Bergab wurde ich immer schneller und kurz vor den Zaun wollte ich abbremsen. Aber das Fahrrad kam nicht zum Stillstand sondern rollte weiter bis vor den Zaun. Der Zaun muss richtig stabil gewesen sein denn er hatte mein Fahrrad vollständig gestoppt. Ich rutschte als vom Sattel Strack über den Zaun mit einem beeindruckenden Salto über den Fluss. Dahinter war ein Brennnessel Beet...

    Zu meinem Pech hatte ich auch noch eine kurze Hose und ein T-Shirt an. Ich lag gerade mal 5 Sekunden da unten (ich sah in dem Moment nur schwarz) schon spürte ich dass es ganz warm um mich herum wurde. Langsam fing es an meinen ganzen Körper zu reizen... Nach etwa einer Minute sind meine Kumpels mich aus den Brennnesseln holen gekommen und erst da merkte ich, was passiert war...

    Es gibt davon glaube ich noch ein Video, wenn es mein Kumpel nicht schon gelöscht hat. ^^
    Ich kann ihn ja mal fragen und dann hier hochladen.
    Hatte es 2 Tage nach diesen Unglück angesehen... War recht lustig anzuschauen :D

    Nun ja, zum Glück ist mir nichts Ernsthafteres passiert.
    Nur hat es tierisch am ganzen Körper geschmerzt...

  • GDI+ AutoIt Logo

    • Yjuq
    • 2. Mai 2013 um 22:15

    Gibts das auch als Bildschirmschoner :D?
    Echt nice ^^

  • GUI Elemente Possitionieren funktionirt nicht richtig.

    • Yjuq
    • 2. Mai 2013 um 21:09

    Das zweite was mir gerade Spontan einfällt, die größe der Gruppe!
    Es kann sein, dass die Gruppe sagen wir mal je 100px groß ist.
    Die Labels setzen sich ja auf alle 96px.

    Sprich:
    Wenn nun die Gruppe nicht mit den Labels übereinstimmt, dann "verschiebt" sich das ganze...
    Es liegt dann höchstwahrscheinlich an dem Gruppenabstand zueinander...
    Versuch aber erst einmal den Labelabstand zu erhöhen und die Startposition des ersten Labels zu verringern...

  • GUI Elemente Possitionieren funktionirt nicht richtig.

    • Yjuq
    • 2. Mai 2013 um 20:56

    Ich hab da jetzt ein paar mal drüber geguckt und auch versucht den Fehler zu finden. Du kennst dich ja am besten mit deinen Code aus! Eventuell helfen dir folgende Hinweise bzw. Erkenntnisse, um den Fehler selber zu finden:

    Der Ablauf um die y-Position des Labels zu setzen, ist folgendermaßen:

    Code
    $a_DialogQuestionSitze[1] = 8
    $a_DialogQuestionSitze[3] = 88
    
    
    $yPosAbsolute = $a_DialogQuestionSitsize[1]
    $yPosAbsoluteNext = $yPosAbsolute + 56
    
    
    >> Erstelle Label <<
    
    
    $a_DialogQuestionSitze[1] += $a_DialogQuestionSitze[3] + 8
    Alles anzeigen

    Ich habe einmal berechnet auf welchen y-Positionen sich die Labels nun befinden wenn die Funktion 5 mal aufgerufen wird. Die ">>" geben dabei an, auf welchen Wert sich der Inhalt des Arrays $a_DialogQuestionSitze[1] ändert:

    Code
    1. 64
       >> 104
    2. 160
       >> 200
    3. 256
       >> 296
    4. 352
       >> 392
    5. 448
       >> 488

    Daraus schließe ich, dass der Abstand zwischen den Labels konstant 96px beträgt. Da bedeutet auch, dass der Fehler hier nicht liegt.
    Ich vermute, dass du bei der erstellung der Gruppen oder der Abstand von den Gruuppen zueinander unbewusst erhöst.

    Ich hoffe ich kann dir damit weiterhelfen!
    Ich habe heute keine Kraft mehr mich da einzulesen.

    €dit:
    Ich kann und möchte nicht garantieren dass hier alles zu 100% korrekt ist.
    Das ist bitte selber nachzuprüfen!

    LG. Make :)

  • ständige windows fehlermeldung beim beenden des scripts

    • Yjuq
    • 1. Mai 2013 um 20:15

    Was mir direkt ins Auge gesprungen ist, waren die Zeilen 22 bis 24...
    Es lässt sich folgendermaßen so kürzen:

    [autoit]

    Global $h_stift = _GDIPlus_PenCreate(0xFF000000 + $x_schwarz)
    Global $h_on = _GDIPlus_BrushCreateSolid(0xFF000000 + $x_on)
    Global $h_off = _GDIPlus_BrushCreateSolid(0xFF000000 + $x_off)

    [/autoit]

    Okey,... Nun zu deinen eigentlichen Problem:
    Du versuchst in der Funktion _Binaeruhr_Terminate() zwei vorher definierte Hexdezimalzahlen frei zu geben:

    [autoit]

    Func _Binaeruhr_Terminate()
    ;~ _GUIFadeInOut($h_GUI, False, 8)
    _GDIPlus_GraphicsDispose($h_graphic)
    _GDIPlus_PenDispose($h_stift)
    _GDIPlus_BrushDispose($x_on) ; Hier -> $x_on in $h_on ändern!
    _GDIPlus_BrushDispose($x_off) ; Hier -> $x_off in $h_off ändern!
    _GDIPlus_Shutdown()
    GUIDelete($h_GUI)
    GUIDelete($h_trans)
    Exit
    EndFunc

    [/autoit]

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™