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.

    Einmal editiert, zuletzt von Moombas (10. Juni 2022 um 10:17)

  • Ok sorry , ich ging davon aus , dass die obenstehenden AUs alles Standard AUs seien, ich schaue mal welche er braucht und melde mich dann zurück.

  • 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

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • @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

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • ok danke Alina, dann schau ich mir das noch mal, irgend wie war ich vorher wohl auf einer falschen Hilfeseite...


    Danke schon mal und


    schönen Abend noch

  • 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.

    Zitat

    Function AdlibRegister

    Every 250 ms (or time ms) the specified "function" is called--typically to check for unforeseen errors. For example, you could use adlib in a script which causes an error window to pop up unpredictably.

    The adlib function should be kept simple as it is executed often and during this time the main script is paused. Also, the time parameter should be used carefully to avoid CPU load.

    You can not register a function using parameters.

    Several Adlib functions can be registered. Re-registering an already existing Adlib function will update it with a new time.

    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

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Einmal editiert, zuletzt von Schnuffel (12. Juni 2022 um 10:20)

  • 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

    2 Mal editiert, zuletzt von casi4712 (12. Juni 2022 um 19:06)

  • 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.