Beiträge von BugFix
-
-
Dieser erkennt z. B. die oben angesprochenen includes in den includes.
Nun, das ist aber kein Merkmal besonderer Güte, da es völlig wurscht ist, wenn man Includes einbindet, die ihrerseits von Includes bereits eingebunden werden. Dort wird überall #include-once genutz und somit zusätzlicher Overhead vermieden.
Ich habe ja mal einen IncludeManager in Lua geschrieben. Das Problem Include-in-Include läßt sich sowieso nicht sauber auflösen, weil es nicht DIE Minimal-Include-Lösung gibt. Dadurch das verschiedene Includes innerhalb anderer Includes mehrfach auftauchen und diese wiederum andere Includes einbinden können beißt man sich beim rekursiven parsen der Dateien tatsächlich in den eigenen Hintern ;). Man muß den Includes eine Wertigkeit zuweisen um da eine Struktur zu bekommen.
Ich habe das Programm allerdings nicht fertig gestellt, weil es damals Änderungen gab, wo die Strukturen dauernd geändert wurden. -
hat er vermutlich das Script nicht gespeichert..
Deswegen mein Hinweis, dass man vor Beginn der ersten Codezeile das Skript speichern sollte. Sonst steht einem ja keine Funktionalität des Editors zur Verfügung.
-
Diese Variante scheint leider bei dem verwendeten Kalender nicht zu funktionieren oder ich hab es vergeigt :-/
Ja, da war ich etwas zu schnell - geht nur bei GuiMonthCal
-
Wenn man selbst TCP-Verkehr programmiert, sollte man sich vielleicht selbst um ein ordentliches Protokoll kümmern, unabhängig vom TC-Protokoll selbst.
Ich mach sowas eher selten, aber wenn dann so (sinngemäßer Ablauf):
- Verbindungsaufbau
- Sender an Empf.: [Anzahl-Bytes] zu senden
- Empf. an Sender: warte auf [Anzahl-Bytes]
- Sender:
--- wenn Wert-gesendet=Wert-zu-empfangen -- starte Übertragung Daten
--- wenn Werte nicht gleich -- beginne von vorn
- Sender an Empf.: nach Ende Datenübertragung, "fertig"
- Empf. an Sender:
--- wenn "fertig" empfangen:
--- --- Anzahl empfangen = Anzahl angekündigt --> OK
--- --- Differenz vorhanden --> FAIL -
hat ein Button-Click nicht Vorrang vor einer Schleife?
Nein, wie kommst du da drauf?
Wenn du deine Schleife gestartet hast, wird doch die äußere Schleife, die GuiGetMessage abfragt niemals wieder durchlaufen. Somit kann kein Button-Klick wahrgenommen werden.
Du kannst alternativ im OnEvent-Mode arbeiten. Schau dir mal AutoItSetOption an. Baue dein Skript um zum OnEvent-Mode und schaue was passiert. -
Und das mit FileFindFirstFile habe ich getestet: Du hast recht es dauert manchmal bis zu 4 mal so lange wie mit FileMove("*.*")
Und dann sollte man noch beachten: Soll auf eine andere physikalische Partition oder ins Netz verschoben werden, ist FileMove nicht zu empfehlen. Dann geht deutlich schneller: FileCopy & FileDelete.
-
für "ALT+M" musst du dein erstelltes Script erst speichern, vorher wird das nix.
Ist ja wohl auch sinnfrei, zu skripten ohne dass der Dateiname - respektive die Endung festgelegt ist. Soll der Syntaxhighlighter Gedanken lesen?

-
den kostenlosen Regex Coach
Im Gegensatz zum RegexBuddy erkennt der Coach nicht alles, was in AutoIt-RegEx gematcht wird.
Bsp.:
Erkennung ob in einem String ein 4-buchstabiges Palindrom enthalten ist. Wird erkannt vom RegexBuddy und AutoIt, nicht vom Coach.AutoIt$s1 = 'anna' $s2 = 'marianna' ConsoleWrite(StringRegExp($s1, '(.)(.)\2\1') & @CRLF) ConsoleWrite(StringRegExp($s2, '(.)(.)\2\1') & @CRLF)
Edit: Ich sehe gerade, der Grund ist ein anderer. Der Coach bearbeitet nicht automatisch mehrzeilige Eingaben. Den Modus muss man erst setzen, da bin ich vom Buddy etwas verwöhnt.
-
-
Hab nicht gewusst, dass _ArrayDisplay() auch auf ein Event wartet.
Das hast du falsch verstanden. _ArrayDisplay pausiert den Code. Somit entsteht in der registrierten Funktion ein nicht definierter Zustand.
Daher der Hinweis, innerhalb dieser Msg-auswertenden Funktion niemals User-Interaktionen durchführen. Neben Input- und Messagebox zählt auch _ArrayDisplay zu den User-Interaktionen. -
Bei mir bewirkt die Tastenkombination nichts - habe eine deutsche SciTE-Editor-Oberfläche. Was soll sie genau bewirken?
Dann hast du nur die "Lite-Version" von SciTE. Installiere dir "SciTE4AutoIt" - Link findest du im Portal in der Softwarebox.
-
Unabhängig von der Sinnhaftigkeit Koda zu nutzen: Wozu ein Menüeintrag? Einfacher als "Alt+M" geht doch nun wirklich nicht. Ansonsten schaue mal in meine Threads zum Thema SciTE - da habe ich mehrfach beschrieben, wie man Menüpunkte erstellt.
-
Ich benutze dazu SciTE, da ist die Konsole eh offen:
In die SciTE-Konsole eingeben:
AutoIt3.exe /ErrorStdOut /AutoIt3ExecuteLine "ConsoleWrite(@AppDataDir & @LF)" und ENTER.
Das kannst du dir alles auf einen HotKey packen um es einzufügen und um den gewünschten Parameter dann zu ergänzen. -
Ich habe die Hilfe bestimmt 10-mal gelesen -- den Part habe ich nicht entdeckt.

Wobei das aber am "Warum" nichts ändert. Ob man nun ausser nach "\1 und $1" auch nach den anderen Varianten scant sollte m.E. den Kohl nicht fett machen.
-
Hi,
da ich bisher für Backreferenzen der Einfachheit halber '\1' oder '$1' verwendet habe, ist mir das Problem nie aufgefallen.
Backreferenzen lassen sich ja auch absolut und relativ (\g1 \g-1) oder mit Namen (\k<name>) referenzieren.
Aber - das ist nur möglich mit StringRegExp. Bei der Replace-Funktion werden diese Schreibweisen der Backreferenz ignoriert. In der Hilfe habe ich aber keinen Hinweis darauf gefunden.
Hat jemand eine Erklärung dafür?AutoIt
Alles anzeigen; <named groups> ; funktioniert mit StringRegExp ; ist Datum in TT, MM, JJ gleich? (z.B. "2011/11/11"): $patt = "\d{2}(?<double>\d{2})/\k<double>/\k<double>" ConsoleWrite(StringRegExp('2011/11/11', $patt) & @CRLF) ; schlägt fehl bei StringRegExpReplace ; engl. Datum in deutsche Form bringen: $patt = "(?<year>\d{4})/(?<month>\d{2})/(?<day>\d{2})" ConsoleWrite(StringRegExpReplace('2015/06/08', $patt, '\k<day>.\k<month>.\k<year>') & @CRLF) -
Dieser Thread ist völlig zu Unrecht in der Versenkung verschwunden. Ich werde ihn mal wieder nach oben befördern.
Also wenn ihr mal wieder ein allgemeingültiges Pattern mühsam zusammengepfriemelt habt, her damit, damit die Sammlung wächst.
-
was ist bitte die schnellste Art es mit '0' zu füllen?
Für numerisch '0' kannst du es imho nur in der Schleife sinnvoll lösen.
Falls du mit einem Stringausdruck vorbelegen möchtest, kannst du auch mit StringSplit arbeiten. Aber denk dran: wie der Name sagt ist es eine Stringoperation, d.h. selbst wenn du einen String mit Nullen splittest, enthält das Array keine numerischen Werte, sondern nur den String '0'.AutoIt; Array mit 60 Elementen erstellen, vorbefüllen mit '0' $s0 = '000000000000000000000000000000000000000000000000000000000000' ; 60*'0' Global $aNull = StringSplit($s0, '', 2) ConsoleWrite('Ist Inhalt numerisch? - ' & (IsNumber($aNull[0]) = 1) & @CRLF)Zuweisungsoperationen für ein Array in einer Schleife sind aber auch nichts zeitkritisches. Das arbeitet AutoIt in ms ab. Insofern braucht man sich da nicht noch verrenken um eine Alternative zu finden.

-
Alternativ kannst du ja dafür sorgen, dass Variablen niemals undefinierte Inhalte haben. Erstelle sie einfach mit Inhalt Null, dann kannst du mit einer eigenen Funktion auf _IsNull prüfen.
-
Ich habe mir mal die Telegram-API angeschaut. Adhoc wüßte ich nicht, wie diese auf AutoIt übertragen werden kann. Falls sich da jemand mit beschäftigen möchte, wäre noch der Quelltext für die Telegram-Desktop Anwendung interessant.