Variable wird gelöscht bei einem Funktionsaufruf

  • So etwas ist mir noch nie passiert: ich deklariere die Variable: $Socket = UDPBind($IP, $Port) und sobald ich eine Funktion aufrufe in der ich diese Verwende ist sie nicht mehr deklariert ?( ?( ?(
    Auch wenn ich den Socket in eine andere Variable speicher, funktioniert es nicht: $realSocket = $Socket[1] ???
    Das ist doch nicht normal oder? :wacko:
    Mal sehen was ihr dazu sagt
    Aquaplant

  • Hast du mal @error abgefragt?
    Wenn ein Fehler auftritt ist $Socket = -1, es wird also kein Array erzeugt.

    Edit: zu langsam

    Genau. Denk nämlich auch das ein Fehler ist und @error auf 1 gesetzt wird und du dann probierst mit einem Array weiterzuarbeiten das nur existiert wenn kein Fehler rauskommt.

  • Fehler sind nicht drin (gewesen), hab alle Möglichkeiten durchgeprüft. Hab jetzt ein "Global" vorgesetzt und nun klappts :) Allerdings hatte ich vorher noch nie derartige Probleme; ich schreibe sonst alle Variablen ohne Global, etc. und deklariere sie sobald ich sie brauche. Liegt vielleicht an der neuen Version, das der Fehler kommt?
    Aquaplant
    PS: Glaskugel? ^^

  • Also so ein bisschen Quellcode wäre ganz net ;)
    Meine Glaskugel zickt heut nämlich rum.^^

  • Ahh *klick* ^^
    Fehler ist ja schon behoben, aber hier nochmal der Quellcodeausschnitt:

    Spoiler anzeigen
    [autoit]

    Func Einloggen()
    ;~ MsgBox(0, "PW:", $Passwort)
    ;~ TCPStartup()
    ;~ $IP = TCPNameToIP("")
    ;~ TCPShutdown()
    $IP = "192.168.0.55"
    MsgBox(0, "IP", $IP)
    $a = UDPStartup()
    If $a = 0 Then
    UDPShutdown()
    MsgBox(16, "Startup", "Verbindung fehlgeschlagen.")
    Else
    $Socket = UDPBind($IP, $Port)
    If $Socket = -1 Then
    UDPShutdown()
    MsgBox(16, "Startup", @error)
    Else
    MsgBox(0, "socket", $Socket[1])
    Global $realSocket = $Socket[1] ; <= Hier war der Fehler ;)
    Call("Abschicken")
    EndIf
    EndIf
    EndFunc

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

    Func Abschicken()
    MsgBox(0, $realSocket, $Username&":"&$Loginname&":"&$Passwort)
    UDPSend($realSocket, $Username&":"&$Loginname&":"&$Passwort)
    UDPShutdown()
    Call("Eingeloggt")
    EndFunc

    [/autoit]
  • Soll ich dir sagen was genau der Fehler war oder bist du selbst draufgekommen? ;)