Beiträge von BugFix

    Ich denke, das hier ist, was du willst:


    Das Problem ist etwas umfangreicher:

    - der Benutzer kann die Inputs per Maus anwählen

    - er kann mit TAB zum nächsten Input springen

    Du musst also die Maus einfangen (_MouseTrap) und die TAB-Taste abfangen (z.B. mit GUISetAccelerators auf ein Dummy-Ctrl umrouten).


    Die Gültigkeitsprüfung der Eingabe und Weiterleitung zum nächsten Input solltest du, wie schon beschrieben, mit einem Button realisieren.

    Man kann zwar auch z.B. das über das Abfangen der Enter-Taste realisieren, aber das übersteigt im Moment deine Möglichkeiten noch deutlich.

    Der Benutzer darf das einzelne Input nicht verlassen, bis er eine Eingabe gemacht hat.

    Das ist eine sehr vage Beschreibung. Wie definierst du "Eingabe" - ein Zeichen, eine Zeichenkette (mit Mindestlänge von n), oder andere Einschränkungen?

    Sinnvoll ist einen Button (z.B. "Weiter") einzubinden. Fokus ist im ersten Input, "Weiter" prüft ob Eingabe erfolgt und korrekt - wenn ja: Fokus setzen nächstes Input etc.

    Daher wäre es schön und nett, wenn jemand, der im Gegensatz zu mir aus dem Stegreif gutes Englisch von sich geben kann, den (Chef-)Programmierer von AutoIt darauf aufmerksam machen könnte, damit er die Möglichkeit bekommt, diesen bestimmt nicht allzugroßen Fehler im AutoIt3Wrapper zu beheben.

    Ich habe mal probiert: Das Problem ist nicht der Wrapper. Den benötigt man ja auch grundsätzlich nicht, ist nur ein Tool zur Vereinfachung.

    Wenn man selbst kompiliert ist das Feld "Produktversion" enthalten. Das wird beim Kompilieren über die "Aut2exe.exe" erstellt.


    zum Testen ein beliebiges Skript (hier "msgbox.au3") direkt kompilieren:

    AutoIt
    1. Local $sInFile = "C:\CODE\AutoIt\TEST\msgbox.au3"
    2. Local $Aut2Exe = StringReplace(@AutoItExe, "AutoIt3.exe", "Aut2Exe\Aut2exe.exe")
    3. ; "Aut2exe.exe / In < infile.au3 >[/out < outfile.exe >][/icon < iconfile.ico >][/comp 0 - 4][/nopack][/x64][/bin < binfile.bin >] "
    4. Local $sCmd = StringFormat("%s /in %s", $Aut2Exe, $sInFile)
    5. Run($sCmd)


    Eigenschaften Datei:



    Somit sind Änderungen nur in der fertigen exe mittels Ressource-Hacker möglich.

    Zitat

    Würde mich ehrlich gesagt auch wundern, wenn das was bringen würde, denn dafür müsste ich die AutoIt3Wrapper.au3 doch kompilieren, oder nicht? Bei mir wurde die jedenfalls so "nackt" installiert und wird über die Registry passend aufgerufen, wenn auch über einen Pfadumweg: "c:\programme\autoit3\scite\..\autoit3.exe" "c:\programme\autoit3\scite\autoit3wrapper\autoit3wrapper.au3" /showgui /in "%l".

    Das ist kein Umweg, sondern der normale Weg eine *. au3 ausführen zu lassen, indem man sie als Parameter der autoit3.exe übergibt.

    Kompilieren ist also nicht erforderlich.

    Das Array gibt dir an [0] die Anzahl der gewählten Einträge. An [1] bis [n] findest du den 0-basierten Item Index.

    Den übergibst du dann zum Auswerten an die Funktion

    _GUICtrlListView_GetItemText ( $hWnd, $iIndex [, $iSubItem = 0] ) (mit entsprechendem SpaltenIndex).

    Alternativ kannst du jedes Item mit SubItem in ein Array auslesen:_GUICtrlListView_GetItemTextArray ( $hWnd [, $iItem = -1] )

    Kommentiere doch mal in der "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" die Zeile 14

    #AutoIt3Wrapper_Res_ProductVersion=2.2

    aus. Vielleicht ist damit schon dein Problem gelöst.


    ..und in der "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\Directives.au3" die Zeile 40 ebenfalls auskommentieren

    #AutoIt3Wrapper_Res_ProductVersion= ;Product Version

    Da der TS nicht explizit kyrillsche, japanische, etc. Texte angeführt hat, sollte man Unicode eher vermeiden. In unserem Sprachraum ist mit Windows-1252 alles abgedeckt (Textdateien sind standardmäßig meist in dieser Kodierung) und wenn ich multilingual arbeiten wollte, hätte ich eh das Problem, dass ich mit Dateien unterschiedlicher Kodierung arbeiten müsste. Wiederum ist das Ermitteln der Kodierung (wenn nicht im Text extra hinterlegt) nur unsicher möglich.


    Persönlich wäre ich ja eher dafür, dass Hersteller von Editoren gezwungen werden Textdateien ausschließlich in Unicode zu speichern. Das würde viel Frust beim Programmieren ersparen. ;)

    Ich kann dir nur empfehlen das Projekt komplett in VBA zu lösen. AutoIt hierfür zu verwenden ist wenig sinnvoll.

    Du kannst alles mit den Excel-Bordmitteln lösen. Farbgebung geht über bedingte Formatierung, Feiertage kannst du in extra Tabellen hinterlegen und über Verweise heranziehen, ebenso Schulferien etc. pp.

    Grafische Oberfläche (Menü zur Eingabe, Comboboxen zur Auswahl, ...) bietet alles VBA. Also knie dich lieber etwas in die Excel Programmierung rein, kannst ja auch eine der massenhaft im Netz verfügbaren Vorlagen als Anregung nehmen.

    Dieses hier als Hilfe für alle, die mal vor demselben Problem stehen.


    Meine Frau hat ein Huawei Mate 20 lite. Das Gerät hat 64GB Speicher, für den Nutzer verfügbar: 58GB.

    Nach einem Jahr Nutzung kam nun die Meldung "Speicher voll". Naja, meine Frau tauscht viele Fotos aus und WhatsApp't auch intensiv, da dachte ich mir: Holst du erst mal einen Schwung Videos und Fotos runter, dann hast du erst mal Ruhe. Etwa 10GB Daten runter geladen - aber nach einer Woche dasselbe wieder.

    Aber 10GB in einer Woche - das schafft selbst meine Frau nicht.

    Also habe ich gesucht. Mit dem normalen Datenbrowser war nichts zu finden. Ich habe dann den Cx-Datei Explorer installiert und mir versteckte Dateien anzeigen lassen. Da bin ich dann fündig geworden: .photoShare ist der Bösewicht. In den Unterordnern befanden sich knapp 150.000! IMG-Dateien (thumb), etwa 30GB.

    Warum soviel thumbs gespeichert wurden, ist mir nicht ganz klar. Ich vermute, dass die fehlerhafte Erkennung der Speicherkarte (bekannter Fehler für das Modell, sollte man nicht mit SD-Karte betreiben) zu Synchronisationsfehlern geführt hat und deshalb thumbs mehrfach gespeichert wurden.

    Also die Unterordner von .photoShare/thumb löschen und alles ist wieder im Lot. :thumbup:

    Aber Zeit mitbringen - schafft max. 6GB/Stunde.

    Das Thema wurde in diesem Post behandelt.

    Ich habe die dort gepostete Version meiner UDF jetzt noch etwas verfeinert.


    Dateien

    • config[0.3].au3

      (18,73 kB, 20 Mal heruntergeladen, zuletzt: )

    Hier ein kleines Testskript, das alles erklärt:

    Könnt ihr dieses Verhalten nachvollziehen?

    Wenn ja ist das wohl ein Bug. Denn wenn ich nun im AppendMode auf die Datei zugreife, landet neuer Inhalt statt in einer neuen Zeile, am letzten Wort der letzten Zeile. :Face:


    EDIT:

    Ja, ist (m.M.) ein Bug. Habe die Funktion mal entsprechend erweitert. Standardmäßig wird nun auch das abschliessende CRLF geschrieben, kann optional abgewählt werden:

    Ich habe mal noch eine weitere Funktion hinzugefügt: _CfgSectionGetArray() - liest alle Schlüssel-Wert-Paare einer Sektion in ein 2D-Array.


    Dateien

    • config[0.2].au3

      (14,41 kB, 10 Mal heruntergeladen, zuletzt: )

    Ich habe mal auf die Schnelle das von mir angesprochene cfg-Modell in eine UDF gegossen:



    An diese Möglichkeit hab ich auch schon gedacht.

    Ist halt nur n großer Umbau

    Der Umbau ist ein simples Replace-Skript für deine INI:P, dass die Aufgabe in wenigen ms erledigt.

    Dateien

    • config.au3

      (12,24 kB, 10 Mal heruntergeladen, zuletzt: )

    Dafür verwende ich normale Textdateien als Config-Dateien (*.cfg).

    Struktur je Zeile:

    sektion;Schlüssel=Wert;Schlüssel=Wert;Schlüssel=Wert;Schlüssel=Wert


    Ist easy mit FileReadLine, FileWriteLine, StringSplit zu handeln.

    find ich halt schon lächerlich, kann ich gleich in die tonne treten wenn sowas einfaches schon als virus von ALLEM erkannt wird.

    Beschwer dich bei den hirnbefreiten Skriptkiddies, die AutoIt für Virenbastelei etc. pp. missbrauchen! Dadurch werden AutoIt-Exe'n pro Forma als gefährlich eingestuft.

    Ich umgehe das, indem ich meine Skripte nicht kompiliere, sondern mit der AutoIt3.exe aufrufe (diese wird von Virenprogrammen als sauber betrachtet).

    Running Scripts: AutoIt3.exe [/ErrorStdOut] [/AutoIt3ExecuteScript] filename [params ...]

    Darauf ein ganz klares: Jein!

    Ich habe ein JA gefunden! Guckst du. ;)


    Edit:

    Habs mal getestet

    Aber das mochte mein Nano gar nicht. Keinerlei Ausgabe und neue Sketche nimmt er nicht mehr entgegen

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x8c

    :rolleyes: