Beiträge von Bitnugger

    In Dateien suchen (Alt+F7) mache ich am liebsten mit Total Commander...


    Bevor ich das kannte, habe ich es mit grep/egrep gemacht, das im Paket GnuWin enthalten ist:

    Alina


    So... bin ich zu dir... jetzt mit Edit-Control... 8o


    ja ich beziehe mich ja auch auf diesen Post, zumidest diese Zeile:

    If Round($iFreeSpace, 1) <> Round($iFree, 1) Then ; Eine Stelle hinter dem Komma vergleichen

    ist weder in deinem Vorschlag, noch in meinem Post, das hatte mich nur stutzig gemacht;)

    Verstehe dich nicht... die Zeile ist doch in Post #24... und davon reden wir doch, oder?


    Es geht doch lediglich darum, das GUICtrlSetData nur dann ausgeführt wird, wenn sich der freie Speicher geändert hat. Wenn das zu oft passiert, flackert das Label. Damit also nicht jede kleine Änderungen erfasst wird, kann man die Abfrage auf zwei oder nur eine Stelle hinter dem Komma begrenzen, oder auch nur die Zahlen vor dem Komma nehmen.

    fehlt ein #include <GUIConstantsEx.au3>

    Oh ja, habe ich nun hinzugefügt...


    Eine RNS-Datei in einen andernen Dateityp umbenennen würde erkannt werden, umgekehrt jedoch nicht.

    Ja, will man das, muss die Abfrage entsprechen angepasst werden... den alten Namen bekommst du mit "Item1", den neuen mit "Item2".


    $SHCNE_UPDATEITEM tritt laut Beschreibung nur bei Veränderung des Inhaltes eines Elementes auf, hier also nicht nötig.

    Wir benötigen ja nicht nur den Namen des Pfades, sondern vor allem auch den Inhalt der Datei... den es aber evtl. noch nicht gibt, nachdem die Datei erstellt wurde ($SHCNE_CREATE) - z.B. mit FileOpen("filename.rns", $FO_OVERWRITE) - hier greift dann $SHCNE_UPDATEITEM, nachdem die Daten geschrieben wurden!


    Da die Aufgabenstellung nur das Erkennen von neuen *.rns vorgibt, brauchen wir $SHCNE_CREATE und $SHCNE_UPDATEITEM, jedoch kein $SHCNE_ASSOCCHANGED. Das kann man natürlich auch noch abfragen, genauso wie $SHCNE_RENAMEITEM, wenn die Datei umbenannt wurde und nun vielleicht keine *.rns mehr ist. Das war aber nicht gefragt.


    Den ersten Zitatsatz weiß ich leider nicht vollständig umzusetzen.

    So habe ich das verstanden:

    Durch $SHCNRF_NEWDELIVERY wird für empfangene Nachrichten gemeinsam genutzter Speicher verwendet. SHChangeNotification_Lock rufst du auf, um auf die eigentlichen Daten zuzugreifen. SHChangeNotification_Unlock rufst du auf, um den Speicher wieder freizugeben, wenn du fertig sind.


    Schau mal hier, wie KaFu das gelöst hat.


    Ansonsten... sehr schön umgesetzt. :rock:


    Hier noch meine Version - die *.rnt wird hiermit auch erstellt:

    Am Anfang schriebst du, dass die Eingabezeichenfolge nur zweistellige Zahlen enthält. ...

    Genau...


    Ordnerüberwachung ist auch nicht schwierig...

    Diese beiden Zeilen sind in dem Script nicht vorhanden

    Das bezieht sich natürlich auf die Funktion in Post #24... wobei dein Quote so nicht richtig ist.


    Welche Zeile? Eine von diesen hier; welche, ist deine Wahl.

    If $iFreeSpace <> $iFree Then ; Zwei Stellen hinter dem Komma vergleichen

    If Int($iFreeSpace) <> Int($iFree) Then ; Nur Ganzzahlen vergleichen

    If Round($iFreeSpace, 1) <> Round($iFree, 1) Then ; Eine Stelle hinter dem Komma vergleichen

    Und wie erledigst du dann die Umwandlung des Arrays in einen String ohne zweite Schleife, vor allem wenn die Anzahl der Doppelziffern ungerade ist?

    So würde ich es dann machen:

    So geht es auch:

    ich hatte Deinen Ansatz auch probiert Bit, ebenfalls das selbe.

    Ich hatte AdlibRegister auf 1000 gesetzt und bei mir ist der Effekt nicht zu sehen... das Label wird bei mir auch nur etwa 1x / Std. geändert.

    AutoIt
    Func _Testspace()
        Local $iFree = Round(DriveSpaceFree($sSystemDrive) / 1024, 2)
        If $iFreeSpace <> $iFree Then
            ConsoleWrite('_Testspace('&$iFree&' GB)' & @CRLF)
            $iFreeSpace = $iFree
            GUICtrlSetData($idLabelSpace, 'Freier Speicher auf SystemDrive ('&$sSystemDrive&')' & ($iFree < $SW ? ' wird knapp!: ' : ' : ') & $iFree & ' GB')
        EndIf
    EndFunc   ;==>_Testspace


    Wenn das bei dir viel öfter passiert, dann ändere die Funktion so ab:

    AutoIt
    ;~     If $iFreeSpace <> $iFree Then ; Zwei Stellen hinter dem Komma vergleichen
        If Int($iFreeSpace) <> Int($iFree) Then ; Nur Ganzzahlen vergleichen
    ;~     If Round($iFreeSpace, 1) <> Round($iFree, 1) Then ; Eine Stelle hinter dem Komma vergleichen

    Dafür is der schwarze Balken wieder da, wenn die BEdingung erfült ist und er das Label zeigen soll.

    Klar, wenn du 10 x pro Sekunde den Text des Labels änderst, dann flackert es... in meinem letzten Script habe ich es so geändert, das nur dann der neue Text (bzw. Zahl) geschrieben wird, wenn er sich geändert hat. Ist dir wohl entgangen...

    Mir ist noch ein ähnlicher Effekt aufgefallen,

    den du sebst verursachst... du hast da ein paar fette Fehler drin... hier mal eine "leicht" korrigierte Version...

    PS: GuiCtrlSetOnHover_UDF.au3 ist bei mir GuiCtrlOnHover.au3


    GUIDelete($hGui)

    Nach dieser Zeile muss ein Exit folgen... denn ohne GUI gibt es auch keine Msg und dein Script funktioniert somit nicht mehr korrekt.


    local $gMsg = GUIGetMsg()

    Außerhalb einer Funktion sind alle Variablen Global und es ist dabei völlig egal, ob du sie mit Local oder Global deklarierst!


    Zudem sollte die Deklaration besser vor dem While stehen. In deinem Fall ist die Variable aber eh überflüssig, weil du sie ja lediglich einmalig für Switch benötigst... da kannst du es besser so machen:

    Switch GUIGetMsg()

    das lauffähige Beispiel hatte ich doch gepostet, ich habe es doch auch entsprechend den Vorschlägen von Mombass gepostet! Da er ja gesagt hatte, er konnte das Problem nachvollziehen, kann ich nun Deine Einlassung nicht ganz nachvollziehen. Soll ich den Inhalt von den UDFs posten, meinst Du das? Oder das Hintergrundbild? Ich hatte es mit meheren Bildern und Formaten probiert,

    ...aber es hat nicht funktioniert.


    Hm, ja, das ist dann natürlich schwierig bis unmöglich für dich und auch nicht dein Vergehen, wenn das Forum Zicken wegen zu großer Dateianhänge macht.


    Solange Gun-Food das nicht gefixt hat, geht das wohl nicht so, wie Musashi es empfohlen hat. Bis dahin kannst du als Workaround einfach den Inhalt der UDFs posten; aber setzte sie in Code-Tags! Mit Bildern ist es schwieriger... verkleinere sie einfach, damit der Upload klappt, oder verwende Bilder, die mit AutoIt installiert wurden, z.B.: "c:\Program Files (x86)\AutoIt3\Examples\Helpfile\Extras\Compass.bmp"

    AutoIt
    $BG = ('C:\Windows\Temp\hg.bmp', 0, 25, 920, 660)
        GUICtrlCreatePic ($BG)

    Hust... was soll dass denn werden? :/


    So macht es Sinn:

    $BG = GUICtrlCreatePic('C:\Windows\Temp\hg.bmp', 0, 25, 920, 660)



    AutoIt
    global $combo1 = GUICtrlCreateCombo ("Scripte", 300, 557, 150, 120)
    global $btnStart = GUICtrlCreateButton("🟥", 450, 557, 23, 23)

    Die Deklarationen von globalen Variablen gehören nicht in eine Funktion!