Automatische DriveSpace Kontrolle

  • Hallo allerseits,

    habe schon wieder mal ein Problem mit der adlibRegister Funktion, keine Ahnung was ich dabei immer vergesse. Ich habe folgendes Problem, ich habe in einem Scipt eine Funktion die ein Label einblenden soll, sobald ein bestimmter Speicherstand erreicht ist auf dem System Laufwerk. Das funktioniert auch, aber er aktualisiert es anscheinend nicht, sieht jemand den Fehler?

    Vielen Dank i.V. und

    ein schönes Wochenende

  • Dein Problem ist ein anderes...

    Du erstellst alle 5 Sekunden ein Label mit dem Inhalt $fslabel...

    Dementsprechend hast du eine riesige Menge an Controls, die dort übereinander erstellt werden. Versuch mal, einen weiteren Text zu setzen.

    Dadurch wird dein Programm irgendwann abstürzen, da du unendlich viele Labels erstellst.

    Du musst das Label zusammen mit der GUI EINMAL erstellen und später nur den Inhalt mit GuiCtrlSetData ändern.

  • Moin, als Ergänzung zu #2:

    Es macht keinen Sinn, die Funktion _createLabels() mehrfach aufzurufen. Für die Prüfung des 'Speicherstands' ist die Funktion _Testspace() da. Die kannst Du über AdlibRegister regelmäßig aufrufen lassen. Und wenn Du sie noch um ein GuiCtrlSetData() ergänzt, kannst Du dort auch den Inhalt des Labels aktualisieren. Dafür sollte die Funktion erstmalig nach der Funktion _createLabels() aufgerufen werden.

    AutoIt
    ;FunctionCalls---------------------------------------------------------------------------------------------------------------------------------------------------
    _createLabels()                    ; erst das Label erstellen,
    _Testspace()                       ; dann versorgen,
    AdlibRegister('_Testspace', 5000)  ; und dann die Prüffunktion per AdlibRegister registrieren 
    ;-----------------------------------------------------------------------------------------------------------------------------------------------------------------
  • Hey, danke erst mal für Eure Mithilfe,

    das mit AdLib Register CreateLabvels war natürlich blödsinn, ist wohl beim isolieren des Teilcodes entstanden, klar dass dann das Label in einer Dauerschleife läuft, also der Code sieht so aus. Dann sollte doch nur noch ein entsprechendes GuiCtrlSetData() fehlen , oder?

    Der Code

  • ... also der Code sieht so aus. Dann sollte doch nur noch ein entsprechendes GuiCtrlSetData() fehlen , oder?

    Moin,

    die Antworten #2 und #3 lassen darauf schließen, dass das mit einiger Wahrscheinlichkeit so sein könnte. ;)

  • okay, dann hatte ich wohl gedacht er aktualisiert das automatisch wenn ich AdlibRegister nehme, war wohl ein Denkfehler, die Funktion soieht nun so aus:

    Nur noch eins kurz, wie kann ich $freeIP auf 2 Nachkommastellen beschneiden


    einen schönen Sonnstag noch und Danke


    lg

    chris

  • okay, dann hatte ich wohl gedacht er aktualisiert das automatisch wenn ich AdlibRegister nehme, war wohl ein Denkfehler,

    :?::?:

    Natürlich macht AdlibRegister das, das ist doch der Sinn des Registrierens einer Funktion für ein Zeitintervall.

    Ich habe das hier mal als Bsp. umgesetzt:

  • Ok war jetz doch simpler als ich dachte, auch wenn ich meine hatte das auch schon ohne Erfolg probiert. Jedoch sehe ich nicht so ganz den Sinn dahinter, wenn ich doch schon Adlib Register nehme, dass ich sämtliche Variablen noch mal neu setzen muss. Ich nehme es jetzt mal so hin;)

    Also Danke noch mal und ein wunderschönes Wochenende

  • Wenn ich mir den Code bisher so ansehe, hast du glaub ich, noch nicht ganz verstanden, was Variablen sind.

    Variablen sind ausschließlich dazu da, Daten zu speichern. Sie verändern nichts. Zum Verändern sind Funktionen da.

    Wenn du also z.B. GUICtrlSetColor($acLabel, $col) aufrufst, wird mit den Werten gearbeitet, die zu dem Zeitpunkt in den Variablen stehen und übergeben werden. Zum Zeitpunkt des Funktionsaufrufs bezieht sich $acLabel auf das Control und $col enthält die Farbe.

    Wenn du aber z.B. $col = "0xFFFFFF" ausführst, wird nur ein anderer Wert in die Variable gespeichert. Dadurch verändert sich nichts. Erst wenn du die Funktion GuiCtrlSetColor erneut mit $col aufrufst, wird die Farbe verändert, da nun ein anderer Wert in $col steht.

    Variablen sind also reine Speicher für Daten/Informationen, die man dann an Funktionen übergibt, die damit weiterarbeiten.

    Das Ändern einer Variable löst aber keine andere Aktion aus, außer, dass in dem Datenfeld jetzt etwas anderes steht.

    Solange die Variable nicht woanders ausgelesen/verwendet wird, ändert sich auch nichts.