Ip Aktualsierung funktionieert nicht

  • Hallo allerseits,


    eigentlich dachte hatte ich gedacht ich hätte das ich das miot dem Adlib Register verstanden hatte, aber wohl doch nicht ganz, oder es funktioniert nicht mit jeder Funktion. Ich versuche verweifelt die aktive IP auszulesen, und zwar aktualisiert, er sag bei mir immer die Variable sei nicht definiert, das seh ich nicht ganz so. Vielleicht kann mir ja jemand auf die Sprünge helfen, wäre ich sehr dankbar. Der isolierte Code sieht folgendermaßen aus:


    Vielen Dank schon mal im Voraus



    lg und eine schöne Restwoche noch


    lg


    Chris

  • Hallo estmal,


    das ist momentan erst mal das ganze Script, ok demnächst gibt es mehr Einrückungen. Zur Frage Local oder Global, ich hatte hier beides schon probiert. Die Fehlermeldung lautet wie folgt:


    Line71 (File "......au3): $IPLAbel = GUICreateLabel(_ActiveIP(), 10, 60, 980, 20) Error

    Error:Variable used without being declared.



    Das was aktualisiert werden soll steht in der Funktion, diese funktioniert solitätr auch und er,ittelt die jeweils aktive IP.



    lg und Danke noch mal



    Chris

  • das ist momentan erst mal das ganze Script

    Du hast nicht ganz verstanden was Oscar dir mitteilen wollte.

    Keiner von uns kann dein Skript testen, da keiner die Services.au3, GUIBkImage oder die GuiCtrlSetOnHover_UDF.au3 von uns hat.

    Klammern wir diese zum testen einfach mal aus kommen ganz andere Fehler als der von dir genannte.
    Z.B. fehlt die Funktion UpdateIP, welche du in AdlibRegister versuchst zu registrieren.
    Oder einem GUICtrlSetData() wird gar keine ControlID übergeben.


    Kurz: Wie bereits von den Vorrednern mitgeteilt, kann dir so hier keiner helfen.

  • Deine angesprochene Zeile existiert nicht in deinem bereitgestellten Code!


    Dort gibt es nur 1 Zeile wo diese Variable vorkommt (local ist hier auch richtig, wenn diese nur innerhalb der Funktion gebraucht wird): local $IPLabel = $objAdapter.IPAddress(0)


    Wegen der fehlenden includes: die GUIBkImage wurde ja auskommentiert, die services.au3 habe ich zwar vorliegen aber GuiCtrlSetOnHover_UDF nicht.

    Aber selbst wenn diese vorliegen würden, kann man hier nicht helfen, solange nicht wirklich alle relevanten Informationen bereit stehen.

    Daher kann man hierbei nur in die :Glaskugel: schauen und raten: setze ein Global bzw Local vor (da ich nicht weiß im welchen Kontext die Variable genutzt wird, kann ich es nicht sagen) $IPLAbel = GUICreateLabel(_ActiveIP(), 10, 60, 980, 20). Und sofern es Global ist, musst du deinen Variablennamen bearbeiten, denn wie oben zu sehen gibt es diese bereits in einem Lokalen Kontext hast, was zu Problemen führen kann/wird.

  • So also die meisten brauchte er nicht, die die jetzt noch drin sind, sollten Standard sein. Zeile 84 wird bei mir bemängelt. Sollte jemand eine UDB nicht haben, bitte sagen, dann Paste ich diese, Hier noch mal das Listing:



    Hoffe jetzt ist mein Problem klar geworden, sorry noch mal


    lg



    Chris

  • Also diese Zeile GUICtrlSetData(_ActiveIP()) ist ja schon mal totaler Unsinn!

    Zum Einen muss die Ctrl-ID angegeben werden und zum Zweiten fabrizierst Du damit eine rekursive Endlosschleife (Abbruch mit Error, wegen Rekursionstiefe).

    Also überlege Dir welches Control-Element (Ctrl-ID) Du ansprechen willst und welchen Wert dieses bekommen soll.

  • Also, ich versuche es noch mal deutlich zumachen. Ich möchte dass in der Variable $IPLABEL das Ergebnis der Funktion _ActiveIP angezeigt wird, das geschieht ja hier auch, allerdings nicht nach Ablauf des Aktualisierungsintervalls, da behauptet er dass die Variable nicht definiert ist, das ist aber am Anfang des Scripte geschehen, wurde inzwischen auch auf Global gesetzt.

  • @CA
    Als erstes fällt mir sofort auf, das
    GUICtrlSetData(_ActiveIP()) so nicht funktioniert.
    Schaue dir mal die HIlfe von GUICtrlSetData an. Was fällt auf? Das Du Daten "setzen" möchtest, aber da GUICtrlSetData nicht richtig anwändest.

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?

  • @GUICtrlSetData(_ActiveIP())

    Zitat


    GUICtrlSetData(_ActiveIP()) so nicht funktioniert

    Wie kommst Du darauf, dass diese Funktion nicht funktioniert, also bei mir wird am Anfang eine IP angezeigt, bei Dir nicht? Wie und an welcher Stelle möchte AutoIt denn die Variable definiert haben, dass scheint doch hier das Hauptproblem zu sein und nicht die RBox, oder etwa doch?


    @Oscar: nach welchem Return solkl ich die Variable definieen? Ich habe es vor und nach dem Return probiert, jeweils auch global, geht alles nicht:(



    Danke noch mal für die Lösungsansätze


    lg



    chris

  • okay den Hauptfehler habe ich nun selber gefunden, aus irgend einem Grund war das rausgeflogen am Anfang, und zwar


    Global $sHost = @ComputerName


    Aber aktualisieren tut er jedenfalls noch nicht

  • @GUICtrlSetData(_ActiveIP())

    Wie kommst Du darauf, dass diese Funktion nicht funktioniert,

    Chris, was sagt Dir die Hilfe über GUICtrlSetData()? Wie viele Bedingungen sind "zwingend erwünscht"?
    Und wenn Du dort es richtig gelesen hast, weiß Du, das dort noch etwas rein muss und wie Oscar Dir doch schon gesagt hat, wird es wohl der Return sein.

    GUICtrlSetData ( controlID, data [, default] )
    3 Farben = 3 Angaben, wobei die letzte kein "MUSS" ist.

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?

  • Also...


    AdlibRegister kann nicht mit Parameter eine Funktion ansteuern. Daher ist das mit dem $sHost so nicht möglich.

    Da musst du mit einer Variable außerhalb der aufzurufenden Funktion arbeiten.

    Eine Funktion innerhalb der selben Funktion aufzurufen ist auch eine ganz schlechte Idee, da diese Funktion ja sowieso schon jede Sekunde über AdlibRegister angesteuert wird.


    Ich hab mal eine quick & dirty Lösung für dein Problem angehängt

    MfG Schnuffel


    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    Einmal editiert, zuletzt von Schnuffel ()

  • Hallo schnuffel, suppernett für deinen Hinweis und Deine Lösung, leider passiert bei mir überhaupt nichts, liegt wohl daran dass du es als Konsolenscript formuliert hast. Vielleicht hätte ich das schon vorher fragen sollen, und hätte da vorher schon sehen können, wo das Problem ist. Vor meiner Neuinstalltion konnte ich noch mit einer Funktionstaste, ich glaube es war F6, unten in Scite4Autoit die Konsolenausgabe einblenden können. Leider funktioniert das nach der letzten Neuinstalltion nicht, muss ich das noch irgendwo einstellen?



    Aber grundsätzlich, wie meinszt du das ASdlibRegister kann nicht mit Prarameter eine Funktion ansteuerr, ich habe es so gemacht, wie ich es schon einigemale erfolgreich Proktiziert habe, nämich so: AdlibRegister('_ActiveIP', 50), da habe ich doch keinen Parameter übergeben ?


    lg und schönen Sonntag noch

  • ok, habe scite nun noch mal neu installiert und nun habe ich komischerweise unter Tools wieder einiges mahre an Punkten, also Deine Lösung funktioniert. Mals schauen,ob es im meiner GUI auch läuft.



    Danke noch mal und schönen Sonntag noch


    lg

  • Da war ich wohl etwas vorschnell, ziehe diocgh mal das Netzkabel, dann wirst Du sehen, dass immer noch die alte IP weiterhin erscheint, da müsste laut der Funktion ja dann 0 stehen. Also ganz so einfach ist es wohl doch nicht.