GUI Status Bar Bug?!?

  • Hey.
    Hier mal ein kleines Testscript.
    Wenn ich dies in Scite ausführe läufts ohne Probleme, nur sobald ich es compiliere und es ausführe bekomm ich direkt nen Fehler von Window: Programm funktioniert nicht mehr usw.

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #Include <GuiStatusBar.au3>

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

    Enum $MGUI, $hMGUI, $hMGUISB, $MGUIanz
    Global $aMGUI[$MGUIanz],$bTest = True

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

    Opt("GUIOnEventMode",1)
    $aMGUI[$MGUI] = GUICreate("Test",200,200)
    $aMGUI[$hMGUI] = WinGetHandle($aMGUI[$MGUI])
    Local $aParts[3] = [150, -1]
    $aMGUI[$hMGUISB] = _GUICtrlStatusBar_Create($aMGUI[$hMGUI])
    _GUICtrlStatusBar_SetParts($aMGUI[$hMGUISB], $aParts)
    _GUICtrlStatusBar_SetText($aMGUI[$hMGUISB], "Bereit...", 0 )
    GUISetOnEvent(-3,"_exit")
    GUISetState()

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

    AdlibRegister("Chance",2000)

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

    While 1
    If $bTest Then
    If _GUICtrlStatusBar_GetText($aMGUI[$hMGUISB],0) <> "Warte..." Then _GUICtrlStatusBar_SetText($aMGUI[$hMGUISB], "Warte...", 0 )
    Else
    If _GUICtrlStatusBar_GetText($aMGUI[$hMGUISB],0) <> "Bereit..." Then _GUICtrlStatusBar_SetText($aMGUI[$hMGUISB], "Bereit...", 0 )
    EndIf
    Sleep(100)
    WEnd

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

    Func Chance()
    Local $aText[10] = ["Test","loooooool","huhuhuuhuh","12345","nixxxx","hmmmm","naaaaaja","blaaaaaa","bkuuub","soooo"]
    _GUICtrlStatusBar_SetText($aMGUI[$hMGUISB], $aText[Random(0,UBound($aText)-1,1)], 0 )
    Sleep(1000)
    $bTest = Random(0,1,1)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    wer ne Idee an was das liegt?

    mfg Darter

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

    Einmal editiert, zuletzt von Darter (2. August 2010 um 20:33)

  • und was soll das jetzt bringen?

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Ganz einfach, bei meinem XP-Rechner ist es so:
    Innerhalb von SciTE stehen die Includes auf der Beta-Installation.
    Nur wenn ich jetzt ein Script kompilieren will, nimmt der AU3 'Kompiler', warum auch immer, die Includes aus der Normalen Version, und nicht die Beta Includes. Dadurch funktionieren viele meiner Scripte so nicht, weil eben einige gefordete Funktionen Beta-Funktionen sind.

    Sollt das jetzt bei dir auch so sein, musst du einfach '#AutoIt3Wrapper_Version=beta' mit einbauen und der AutoIt 'Kompiler' nimmt immer die Beta-Includes :D

    Grüsse!

  • Ich versteh nicht, was du mit beta includes meinst. Ich hab nur einen Include Ordner, indem meine Includes sitzen.
    Was will er da vo Beta nehmen?

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Sag mal kannst du bitte den ersten post lesen?

    Ich hab doch beschrieben, dass ich einen Fehler von Windows bekomme. Ab und zu kommt dieser auch in Scite und im vompilierten zustand kommt dieser Fehler immer.

    Und ich wollte wissen, ob jemand eine Lösung dafür hat, bzw ob jemand weiß warum dieser Fehler entsteht.

    So ein Rumgespamme und sinnlosen Antworten wie deiner kannst du gut und gerne für dich behalten oder hat mich dein Post jetzt auch nur ein stuck weiter gebracht? Nein

    EDIT. die galt für Jam00 nicht an den vorposter

    Zum Vorposter ja was soll ich sagen, ich dachte ich hätte mit meinem letzten Post klar gemacht, dass das keinen unterschieb bewirkt. Kann doch auch jeder an dem Bsp. ausprobieren kann.

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • ok tut mir leid, ich wollte nur Klar machen das man das Problem das es beim Compiler nicht geht nicht löschen kann wenn es auch in SciTE nicht geht

    Ich habe das Script jetzt einfach mal so Compiler:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #Include <GuiStatusBar.au3>

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

    Enum $MGUI, $hMGUI, $hMGUISB, $MGUIanz
    Global $aMGUI[$MGUIanz],$bTest = True

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

    Opt("GUIOnEventMode",1)
    $aMGUI[$MGUI] = GUICreate("Test",200,200)
    $aMGUI[$hMGUI] = WinGetHandle($aMGUI[$MGUI])
    Local $aParts[3] = [150, -1]
    $aMGUI[$hMGUISB] = _GUICtrlStatusBar_Create($aMGUI[$hMGUI])
    _GUICtrlStatusBar_SetParts($aMGUI[$hMGUISB], $aParts)
    _GUICtrlStatusBar_SetText($aMGUI[$hMGUISB], "Bereit...", 0 )
    GUISetOnEvent(-3,"_exit")
    GUISetState()

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

    AdlibRegister("Chance",2000)

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

    While 1
    If $bTest Then
    If _GUICtrlStatusBar_GetText($aMGUI[$hMGUISB],0) <> "Warte..." Then _GUICtrlStatusBar_SetText($aMGUI[$hMGUISB], "Warte...", 0 )
    Else
    If _GUICtrlStatusBar_GetText($aMGUI[$hMGUISB],0) <> "Bereit..." Then _GUICtrlStatusBar_SetText($aMGUI[$hMGUISB], "Bereit...", 0 )
    EndIf
    Sleep(100)
    WEnd

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

    Func Chance()
    Local $aText[10] = ["Test","loooooool","huhuhuuhuh","12345","nixxxx","hmmmm","naaaaaja","blaaaaaa","bkuuub","soooo"]
    _GUICtrlStatusBar_SetText($aMGUI[$hMGUISB], $aText[Random(0,UBound($aText)-1,1)], 0 )
    Sleep(1000)
    ;~ $bTest = Random(0,1,1)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Erst kammen als Fehler doch jetz geht es, Compilert und in SciTE ausgeführt, ich hänge die exe mal an
    Da man exen nicht anhängen darf habe ich einfach mal die Dateiendung geändert, müsst es nur wieder in .exe umbennen

  • hmmm genauso sinnnlos, da es genau daselbe ist wie meins, nur dass du ne zeile auskommentiert hast, die nicht auskommentiert sein soll!

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

    • Offizieller Beitrag

    Scheint an Win7 64 zu liegen oder besser gesagt es ist ein Autoit Bug. Das Script funzt nicht wenn es als 32 Bit compiliert wird. Als 64 Bit klappt es.

    Edit: Der Bug befindet sich in der Funktion _GUICtrlStatusBar_GetText

    Edit2: Die Zeile :

    [autoit]

    Local $aParts[3] = [150, -1]

    [/autoit]


    Sollte eher so aussehen:

    [autoit]

    Local $aParts[2] = [150, -1]

    [/autoit]


    Es gibt ja nur 2 Parts

  • Scheint an Win7 64 zu liegen oder besser gesagt es ist ein Autoit Bug. Das Script funzt nicht wenn es als 32 Bit compiliert wird. Als 64 Bit klappt es.


    Das ist echt komisch.

    PS: Das hier ist völlig unnötig. GUICreate hat als Rückgabewert bereits das Handle.

    [autoit]

    $aMGUI[$MGUI] = GUICreate("Test",200,200)
    $aMGUI[$hMGUI] = WinGetHandle($aMGUI[$MGUI]) ; unnötig

    [/autoit]

    Techmix: Da Die Stable aktueller als die Beta ist, solltest du die Beta deinstallieren. Warum willst du mit veralteten Betaversionen arbeiten?

    • Offizieller Beitrag

    Richtig komisch wird es (weil es so funktioniert), wenn man die Array-Variablen gegen normale austauscht:

    Spoiler anzeigen
    [autoit]


    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GuiStatusBar.au3>

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

    Global $bTest = True

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

    Opt("GUIOnEventMode", 1)
    $hGui = GUICreate("Test", 200, 200)
    Local $aParts[3] = [150, -1]
    $hStatus = _GUICtrlStatusBar_Create($hGui)
    _GUICtrlStatusBar_SetParts($hStatus, $aParts)
    _GUICtrlStatusBar_SetText($hStatus, "Bereit...", 0)
    GUISetOnEvent(-3, "_exit")
    GUISetState()

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

    AdlibRegister("Chance", 2000)

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

    While 1
    If $bTest Then
    If _GUICtrlStatusBar_GetText($hStatus, 0) <> "Warte..." Then _GUICtrlStatusBar_SetText($hStatus, "Warte...", 0)
    Else
    If _GUICtrlStatusBar_GetText($hStatus, 0) <> "Bereit..." Then _GUICtrlStatusBar_SetText($hStatus, "Bereit...", 0)
    EndIf
    Sleep(100)
    WEnd

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

    Func Chance()
    Local $aText[10] = ["Test", "loooooool", "huhuhuuhuh", "12345", "nixxxx", "hmmmm", "naaaaaja", "blaaaaaa", "bkuuub", "soooo"]
    _GUICtrlStatusBar_SetText($hStatus, $aText[Random(0, UBound($aText) - 1, 1)], 0)
    Sleep(1000)
    $bTest = Random(0, 1, 1)
    EndFunc ;==>Chance

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]
  • hmm erstmal dake für die ersten nützlichen Antworten^^

    Werde ich gleichmal probieren, wenn ich die Variablen austausche.
    Aber eig. verste ich da den Unterschied nicht ganz ^^

    @Raubi. Das sich der Fehler da befindet war mir schon so gut wie klar, da es beim auskommendirern dieser Zeilen immer lief^^.

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

    • Offizieller Beitrag

    Oscar , deine Scriptversion stürzt auch ab, wenn man sie als 32 Bit Compiliert und die Exe ausführt.

    Edit wenn man _GUICtrlStatusBar_GetText wegläßt lauft das Script

    Spoiler anzeigen
    [autoit]

    #include <GuiStatusBar.au3>

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

    Global $bTest = True

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

    Opt("GUIOnEventMode", 1)
    $hGui = GUICreate("Test", 200, 200)
    Local $aParts[3] = [150, -1]
    $hStatus = _GUICtrlStatusBar_Create($hGui)
    _GUICtrlStatusBar_SetParts($hStatus, $aParts)
    _GUICtrlStatusBar_SetText($hStatus, "Bereit...", 0)
    GUISetOnEvent(-3, "_exit")
    GUISetState()

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

    AdlibRegister("Chance", 2000)

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

    While 1
    If $bTest Then
    _GUICtrlStatusBar_SetText($hStatus, "Warte...", 0)
    Else
    _GUICtrlStatusBar_SetText($hStatus, "Bereit...", 0)
    EndIf
    Sleep(100)
    WEnd

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

    Func Chance()
    Local $aText[10] = ["Test", "loooooool", "huhuhuuhuh", "12345", "nixxxx", "hmmmm", "naaaaaja", "blaaaaaa", "bkuuub", "soooo"]
    _GUICtrlStatusBar_SetText($hStatus, $aText[Random(0, UBound($aText) - 1, 1)], 0)
    Sleep(1000)
    $bTest = Random(0, 1, 1)
    EndFunc ;==>Chance

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]
  • Hm... wenn ich es 64 Bit Compile und Techmix Lösungsvorschlag auch noch einbaue, klappt es bei mir.


    Naja und was machen diejenigen, die keine 64 bit version von Windows haben? :thumbdown:

    Oscar dein Scriptt stürtzt bei mir schon direkt im Scite ab, als exe the same

    Edit wenn man _GUICtrlStatusBar_GetText wegläßt lauft das Script

    Jop das ist mir bekannt, jedoch hatte ich diese überprüfung extra eingebau, da die Schleife ja alle zehntel sec wiederwohlt wird fängt die Sb an zu flakern

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.