Variablen entdeklarieren

  • Hey, wie kann ich meine Variablen wieder entdecklarieren?
    Also hab hier zum Beispiel eine exemplarische Funktion um es zu verdeutlichen:

    [autoit]


    While True

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

    Global $x1

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

    $test

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

    If not $x1 Then
    $x1 = 5
    If $x1 = 5 Then
    MsgBox(1,"abc","abc")
    EndIf
    EndIf
    WEnd

    [/autoit]


    Nachdem er die If-Kette wieder verlassen hat, soll er $x1 wieder undeklariert machen.
    Dachte erst, ich mache das, indem ich innerhalb der If-Bedingung mit Local arbeite, aber das geht anscheinend nur, wenn ich das Ding in ne Funktion aulagere.

  • HI!

    Einfach $x1 = ""
    Ganz verstehen du ich aber nicht was du damit beabsichtigst!?

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

    While True

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

    Global $x1

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

    $test

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

    If not $x1 Then
    $x1 = 5
    If $x1 = 5 Then
    MsgBox(1,"abc","abc")
    EndIf
    $x1 = ""
    EndIf
    WEnd

    [/autoit]

    If not :?: then ?( else :thumbup:

  • Also verstehen tue ich es auch nicht.

    If not $x1 Then

    Also ich lese das eher so, das wenn die Variable $x1 nicht vorhanden ist, dann ...

    Aber spätistens wenn eine Variable nicht declariet ist kann er sie doch nicht decompilieren.

    Oder wenn 5 der globale Standart ist, dann mache es so: Global $x1 = "5"

    Aber wie gesagt: Also verstehen tue ich es auch nicht.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Das mit dem $x1 = "" Passt nicht

    [autoit]


    Global $test, $a

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

    $a = 5
    While True

    If $a Then
    $test = "läuft"
    EndIf
    $a = ""
    Msgbox(1, "abc", $test)

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

    Sleep(1000)
    WEnd

    [/autoit]


    Würde es passen, müsste die MsgBox beim ersten mal "läuft" anzeigen, beim zweiten mal müsste sie leer sein. Leer ist sie aber nur, wenn ich $a nicht deklariere, also oben $a = 5 nicht schreibe, sondern nur das Global $a lasse.

  • also zum if so wies von dir da steht steht die

    wenn 5 dann

    richtig:

    wenn $a = 5 dann

    was aber immer zu trifft da du es ja auf 5 deklarierst

    somit ist auch klar warum die msgbox nicht leer ist beim zweite mal durchlaufen da
    deine if anweißung nicht stimmt

    so müsste es klappen

    [autoit]

    Global $test, $a

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

    $a = 5

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

    if $a <> "" then

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

    $test = "läuft"

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

    EndIf
    $a = ""
    Msgbox(1, "abc", $test)

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

    Sleep(1000)

    [/autoit]

    deine While schleife hab ich drausen gelasen weil die bedinung für mich keinen sinn gab
    probiers mal aus wenn was nciht klappt frag einfach noch mal

    lg andy i.a. von achim