Plötzlich Variable used without being declared

  • Hallo Community,

    nach Monaten endlich mal wieder Lust und Zeit mich mit AutoIT und meinem kleinen Programm zu beschäftigen. Doch ziemlich schnell die Ernüchterung. Seit mitte März nichts verändert am funktionierenden Programm und nun das.

    Zitat

    (23) : ==> Variable used without being declared.:
    Local $comboBox = GUICtrlCreateCombo("", 50, 50, 90, 150, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    Local $comboBox = GUICtrlCreateCombo("", 50, 50, 90, 150, BitOR(^ ERROR

    Zitat

    (29) : ==> Variable used without being declared.:
    $statuslabel = GUICtrlCreateLabel ($statusdisplay, 0, 101, 200, 16, BitOr($SS_SIMPLE, $SS_SUNKEN))
    $statuslabel = GUICtrlCreateLabel ($statusdisplay, 0, 101, 200, 16, BitOr(^ ERROR


    Ich habe bevor ich etwas daran machen wollte erstmal nach AutoIT Updates geschaut, fündig geworden und dann die Version v3.2.12.1 installiert. Hat sich da was wegen der neuen Version geändert? Ich bin ziemlich planlos und hoffe ihr könnt mir, mal wieder, helfen.

    Vielen Dank schon jetzt, Gruß Bill.

  • Hallo Bug.

    es sei aber gesagt, das bei Xenos Organize Includes noch eine Überarbeitung notwendig ist. Xeno hatte aber zugesagt, das wenn er die Zeit gefunden hat, das er es überarbeitet.

    Manno, wieso versteckt sich die Zeit immer und das wo jetzt die Sommerzeit anfängt ;)

    LG, Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ich glaube für die Fälle sind mindestens drei #includes notwendig.

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <GUIComboBox.au3>

    [/autoit]
  • Danke für diese Information, da kann ich natürlich lange suchen. Und mit den includes von prizma geht das soweit auch. Ein Stück weiter bekomme ich dann aber die nächste Fehlermeldung, vermutlich aus dem gleichen Grund.

    Zitat

    (59) : ==> Unknown function name.:
    $varZeny_format = _StringAddComma($varZeny_read)
    $varZeny_format = ^ ERROR


    Ich habe schon versucht mit Hilfe von google und verschiedenen Foren das zu lösen, aber gefunden hab ich nichts. Könnt ihr mir vielleicht auch hierbei helfen?

    Danke und Gruß Bill.

  • Könnte es sein das du die Function _StringAddThousandsSep brauchst?

    MfG Night

  • Danke dafür, auch das funktioniert nun. Aber das Update macht mich echt fertig, vorher ging alles und nun ein Fehler nach dem anderen. Jetzt wird die Checkbox $pinBox nicht angezeigt und ich weiss nicht warum. $transBox macht was es soll, darum kann ich mir das nicht ganz erklären.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiComboBox.au3>
    #include <StaticConstants.au3>
    #include <String.au3>
    #include <Memory2.au3>
    #NoTrayIcon

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

    ...

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

    $pinBox = GUICtrlCreateCheckbox("", 5, 73)
    GUICtrlCreateLabel("Pin", 25, 76, 20, 14)
    $transBox = GUICtrlCreateCheckbox("", 55, 73)
    GUICtrlCreateLabel("Transparent", 75, 76, 65, 14)

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

    ...

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

    GUICtrlSetOnEvent($pinBox, "PinBox_Check")
    GUICtrlSetOnEvent($transBox, "TransparentBox_Check")

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

    ...

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

    PinBox_Check()
    TransparentBox_Check()

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

    ...

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

    Func PinBox_Check()
    If BitAND(GUICtrlRead($pinBox), $GUI_Checked) Then
    WinSetOnTop($gui, "", 1)
    Else
    WinSetOnTop($gui, "", 0)
    EndIf
    EndFunc

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

    Func TransparentBox_Check()
    If BitAND(GUICtrlRead($transBox), $GUI_Checked) Then
    WinSetTrans($gui, "", 155)
    Else
    WinSetTrans($gui, "", 255)
    EndIf
    EndFunc

    [/autoit]


    Hätte ich nur das Update nicht gemacht. Ich hoffe erneut, ihr könnt mir auch hier helfen. Wenn nötig, poste ich auch mal den ganzen Code. Danke und Gruß Bill

  • Hi mir steht der Sprung von 3.2.10.0 auf die neu Version bevor. ;(
    Hatte es schon Testweise, habe es aber wieder runter geschmissen, da sich schon wieder so viel verändert hat. Ich dachte mit den Includes wäre es jetzt Abgeschlossen.

    MfG
    Der_Doc

  • Das ist absoluter Horror für mich, bin ich auf dem Gebiet der Programmierung usw. doch ein kompletter Neuling. Ich war so glücklich als alles endlich mal annähernd so funktionierte wie ich mir das vorgestellt habe. Bin auch dank dieser Community hier so weit gekommen und hoffe man hilft mir auch bei diesen Problemen.

    Eine allgemeine Frage habe ich aber noch. Wieso zerlegt man die includes so in der neuen Version, was für Vorteile hat man davon?


    Gruß Bill

  • Hi,
    die Frage kann ich dir beantworten.

    Zitat

    Eine allgemeine Frage habe ich aber noch. Wieso zerlegt man die includes so in der neuen Version, was für Vorteile hat man davon?

    Die Includes werden so zerlegt damit der fertige Code (exe-Datei) net so unglaublich groß wird. Im au3-Format ist ne datei net größer als 3-5 kb und wenn sie
    kompiliert wurde ist sie 500 kb groß (war nur ein Beispiel). Alle Includedateien müssen in den Quellcode eingebunden werden ob sie gebraucht werden oder net. ;(

    Das denke ich mal sollte die Antwort sein. Sonst habe ich keine vernünftige Erklärung dafür.

    MfG
    Der_Doc

  • Hmm gut, das macht durchaus Sinn. Treibt mich aber trotzdem zur Verzweiflung. Keine Ahnung warum die Checkbox nun nicht mehr angezeigt wird, die zweite dahinter funktioniert doch.


    Gruß Bill

  • Also kann mir keiner sagen, warum die Checkbox $pinBox nicht mehr funktioniert? Die Checkbox $transBox funktioniert einwandfrei also kann es eigentlich kein grundlegendes Problem sein.

    Wäre echt klasse, wenn mir jemand dabei helfen kann. Danke und Gruß Bill

  • Absolut nichts geändert, lediglich ein AutoIT Update durchgeführt und die includes von <GUIConstants.au3>, <Memory2.au3>, <String.au3> auf <GUIConstantsEx.au3>, <GuiComboBox.au3>, <StaticConstants.au3>, <String.au3>, <Memory2.au3> geändert damit es überhaupt wieder geht. Vor dem Update hat alles funktioniert. Und wenn mir keiner sagt, das ich den ganzen Code mal posten soll, woher soll ich das wissen :(

    Werde ich aber nach dem Fussballspiel nachholen. Gruß Bill

  • So, hier dann mal alles, hoffe das hilft weiter.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiComboBox.au3>
    #include <StaticConstants.au3>
    #include <String.au3>
    #include <Memory2.au3>
    #NoTrayIcon

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

    Const $cnRefreshTime = 5000
    Global $statusdisplay = "watching..."
    Local $pid, $info, $tRefresh

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

    $varName = IniRead("ZenyWatch.ini", "Address", "Name", "NotFound")
    $varZeny = IniRead("ZenyWatch.ini", "Address", "Zeny", "NotFound")

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

    Opt("TrayAutoPause", 0)
    Opt("TrayMenuMode", 1)
    Opt("GUIOnEventMode", 1)

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

    $Gui = GUICreate("ZenyWatch", 200, 117)
    GUICtrlCreateLabel("Name:", 5, 4, 40, 14)
    GUICtrlCreateLabel("Zeny:", 5, 20, 40, 14)
    Local $controlName = GUICtrlCreateLabel("", 45, 4, 150)
    Local $controlZeny = GUICtrlCreateLabel("", 45, 20, 150)
    GUICtrlCreateLabel("Prozess:", 5, 53, 40, 14)
    Local $comboBox = GUICtrlCreateCombo("", 50, 50, 90, 150, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    $pinBox = GUICtrlCreateCheckbox("", 5, 73)
    GUICtrlCreateLabel("Pin", 25, 76, 20, 14)
    $transBox = GUICtrlCreateCheckbox("", 55, 73)
    GUICtrlCreateLabel("Transparent", 75, 76, 65, 14)
    Local $quitButton = GUICtrlCreateButton("Cancel", 148, 66, 50, 23)
    $statuslabel = GUICtrlCreateLabel ($statusdisplay, 0, 101, 200, 16, BitOr($SS_SIMPLE, $SS_SUNKEN))

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "Close_Or_Quit_Clicked")
    GUICtrlSetOnEvent($comboBox,"ComboBox_Check")
    GUICtrlSetOnEvent($pinBox, "PinBox_Check")
    GUICtrlSetOnEvent($transBox, "TransparentBox_Check")
    GUICtrlSetOnEvent($quitButton, "Close_Or_Quit_Clicked")

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

    GUISetState(@SW_SHOW)

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

    Process_Check()
    Refresh_ComboBox()
    ComboBox_Check()
    PinBox_Check()
    TransparentBox_Check()

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

    $tRefresh = TimerInit()

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

    While 1
    If TimerDiff($tRefresh) >= $cnRefreshTime Then
    Process_Check()
    If Refresh_ComboBox() Then ComboBox_Check()
    $tRefresh = TimerInit()
    EndIf

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

    $info = _MemoryOpen($pid)
    $varName_read = _MemoryRead("0x" & $varName, $info)
    $varZeny_read = _MemoryRead_dword("0x" & $varZeny, $info)
    $varZeny_format = _StringAddThousandsSep($varZeny_read)
    _MemoryClose($info)

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

    If GUICtrlRead($controlName) <> $varName_read Then GUICtrlSetData($controlName, $varName_read)
    If GUICtrlRead($controlZeny) <> $varZeny_format Then GUICtrlSetData($controlZeny, $varZeny_format)
    If GUICtrlRead($statuslabel) <> $statusdisplay Then GUICtrlSetData($statuslabel, $statusdisplay)
    Sleep(100)
    WEnd

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

    Func Process_Check()
    While Not ProcessExists("Ragexe.exe")
    If GUICtrlRead($statuslabel) <> "Ragexe.exe not found!" Then GUICtrlSetData($statuslabel, "Ragexe.exe not found!")
    Sleep(500)
    WEnd
    EndFunc

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

    Func Refresh_ComboBox()
    Local $retValue = 0
    Local $processList = ProcessList("Ragexe.exe")
    Local $comboList = ""

    For $i = 1 To $processList[0][0]
    $comboList &= "|" & $processList[$i][1]
    Next

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

    If (StringInStr($comboList, "|" & $pid) = 0) Or ($pid = "") Then
    $pid = $processList[1][1]
    $retValue = 1
    EndIf
    GUICtrlSetData($comboBox, $comboList, $pid)

    Return $retValue
    EndFunc

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

    Func ComboBox_Check()
    $pid = GUICtrlRead($comboBox)
    EndFunc

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

    Func PinBox_Check()
    If BitAND(GUICtrlRead($pinBox), $GUI_Checked) Then
    WinSetOnTop($gui, "", 1)
    Else
    WinSetOnTop($gui, "", 0)
    EndIf
    EndFunc

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

    Func TransparentBox_Check()
    If BitAND(GUICtrlRead($transBox), $GUI_Checked) Then
    WinSetTrans($gui, "", 155)
    Else
    WinSetTrans($gui, "", 255)
    EndIf
    EndFunc

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

    Func Close_Or_Quit_Clicked()
    Exit
    EndFunc

    [/autoit]


    Danke und Gruß Bill

  • Also ich bin nun einfach mal hingegangen und habe mit dem AutoIt Window Info geschaut was da abgeht. Aus irgendeinem mir unerklärlichen Grund war die erste Checkbox 20, 158 groß. Das bedeutet also, er hat die Box einfach aus dem GUI rausgeschoben. Was ich darab aber nicht verstehe ist, das die zweite Checkbox das Problem nicht hat und sie ist von der Funktion her ziemlich gleich. Die Größe nun begrenzt und siehe da das Ding ist wieder im GUI. Habt ihr eine Erklärung dafür?

    Um nochmal auf das ursprüngliche Problem mit includes zurück zu kommen. Gibt es eine einfach aber wirkungsvolle Methode, außer Xenos Organize Includes, mit dem ich nicht ganz klargekommen bin, herauszufinden welche includes ich den jetzt genau brauche? Weil wenn ich irgendwas einbinde was ich nicht brauche, ist nichts an Platz gewonnen.

    Gruß Bill

  • Bei mit hat das einbinden von Organize Includes erst nicht geklappt da ich keine Beta Version installiert habe. Die kann man auch irgendwie ausblenden (so das man die nicht auch noch installieren braucht). Habe aber aus Faulheit einfach die aktuelle Beta mit installiert. Siehe das Organize includes ist eine super Sache und funzt einwandfrei.
    Versuch das noch mal.