1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • _ArraySort() Probelm

    • BugFix
    • 17. Mai 2011 um 21:04

    Wenn das Array numerisch sortiert werden soll, müssen auch numerische Werte enthalten sein.
    Befülle es mit: $a[$i] = Number($variable)
    Somit gehst du sicher, dass alle Inhalte numerisch sind und entsprechend sortiert werden.

  • TimeStamp - erweitert zu kleiner Versionsverwaltung für (.au3 und .lua) alle Typen

    • BugFix
    • 17. Mai 2011 um 20:02
    Zitat von Paule

    Muss ich immer hinter der Versionsnummer ein "v" oder "V" machen?
    Beim Ausführen mit "F5" wird die Versionsnummer erhöht aber der Marker "v" oder "V" wird gelöscht.
    Wenn das so gewollt ist für was ist dann der Marker "n"


    Man möchte ja nicht bei jedem Speichern ein Kopie der Version erstellen.
    Bsp.: Du fügst eine Debugzeile ein um einen Bug aufzuspüren - wär schön blöd, wenn dann bei jedem Speichern (mit F5 ausführen speichert auch vorher) auch ein Backup erstellt wird.
    Deshalb soll ein Backup mit der entsprechenden Versionsnummer nur angelegt werden, wenn du es wirklich willst.
    Schreibst du ein 'v' hinter die aktuelle Versionsnummer ist das die Anweisung die Nummer der Subversion hochzuzählen (aus 'v 0.5' wird 'v 0.6').
    Mit einem 'V' weist du an, dass die Mainversion hochgezählt und die Subersion zurück auf '0' gesetzt wird (aus 'v 1.4' wird 'v 2.0').
    Das 'n' wiederum bewirkt, dass du z.B. einen Versionssprung machen kannst. Du schreibst anstelle der vorhandenen Versionsnummer die Versionsnummer deiner Wahl und dahinter das 'n'. Das bewirkt dann, dass nicht hochgezählt wird, aber ein Backup mit der per Hand eingetragenen Versionsnummer wird trotzdem angelegt.

  • ODBC-Zugriff auf eine Paradox-DB

    • BugFix
    • 17. Mai 2011 um 14:33
    Zitat von benne

    Anscheinend bin ich zwar wohl der einzige, der sich mit einer Paradox-Datenbank abplagen muss.


    In unserer Firma werkelt nur noch ein rudimentäres Fragment davon herum, die Hauptarbeit übernimmt jetzt eine Firebird-DB. Bin ich auch heilfroh drüber, denn Paradox heißt nicht umsonst so. :whistling: Bei der DB hat es ca. einmal im Monat die Indexfiles zerschossen. Was zu sehr "paradoxen" Zuständen führt, wenn für Kunde X plötzlich die Umsätze von Kunde Y angezeigt wurden. :wacko: Regelmäßige ReIndexierung gehörte damals zur Tagesordnung.

    Das Unterforum Datenbanken war schon recht reich gefüllt und wenn ich nicht irre, waren auch Paradox Probleme enthalten. Allerdings hat es wohl irgendwie unsere Foren-DB mal etwas zerlegt und dieses Unterforum ist nun leider leer.
    Ich verwende zum Zugriff lieber ODBC-Treiber. Da kann ich mich wenigstens drauf verlassen, dass dann die Kommunikation auch klappt.
    Was die anwendbaren Methoden etc. betrifft: Wenn du das Objekt erstellen kannst, solltest du auch darauf zugreifen können. Ausnahmen sind meist objektspezifische Aktionen mit für AutoIt untypischen Aktionen (Klassen erstellen, vererben etc.). In der Regel hilft da nur: Probieren. ;)

  • Position der InputBox ermitteln

    • BugFix
    • 17. Mai 2011 um 13:06

    Wie du ja schon bemerkt hast, pausiert dein Skript während einer Inputbox Anzeige. Somit hast du auch null Chance eine geänderte Position auszulesen, da die Box bei Skriptweiter Abarbeitung nicht mehr besteht. ;)
    Hilft nur eines: Eigene Inputbox erstellen.

  • FileRead und @ScriptDir Problem..

    • BugFix
    • 17. Mai 2011 um 10:55

    @RR: Nein, auch der Dateiname kann als Parameter verwendet werden.
    vel2000: Laß dir doch mal mit MsgBox/ConsoleWrite den Inhalt von @Scriptdir anzeigen. Wenn deine Angaben stimmen dürfte dort auch kein anderer Pfad enthalten sein.

  • TimeStamp - erweitert zu kleiner Versionsverwaltung für (.au3 und .lua) alle Typen

    • BugFix
    • 17. Mai 2011 um 10:43

    Ich habe noch eine Ergänzung gemacht:
    Soll ein Skript gar nicht erst in die Versionsverwaltung aufgenommen werden, so wird vor dem ersten Speichern an die erste Position im Editor ein * geschrieben.
    Damit wird die Funktion TimeStamp angewiesen nur den Zeitstempel zu setzen ( dieser beinhaltet allerdings standardmäßig die Versionsnr. "v 0.1" ).

    Dazu in der "EigeneTools.lua" die Funktion InsertTimestamp gegen die folgende austauschen:

    geänderte InsertTimestamp
    Code
    -- TIME STAMP===============================================BEGIN
    local function InsertTimestamp(sDir, sName, sExt)
    	local caret = editor.CurrentPos
    	local s = editor:GetText(), t, start, ende, lineNr, lineTxt, verMark, verLen
    	local mustSave = 0
    	local sVer = 'v 0.1' lineLen = 0
    	if sExt == 'au3' then
    		start = "#Region - TimeStamp"
    		ende = "#EndRegion - TimeStamp"
    	elseif sExt == 'lua' then
    		start = "-- TIME_STAMP"
    		ende = start
    	end
    	local a,b = editor:findtext("^"..start, SCFIND_REGEXP)
    	local x,y = editor:findtext("^"..ende, SCFIND_REGEXP)
    	editor:BeginUndoAction()
    	if a ~= nil then
    		editor:GotoPos(a)
    		lineNr = editor:LineFromPosition(editor.CurrentPos)
    		if sExt == 'lua' then
    			lineTxt, lineLen = editor:GetLine(lineNr)
    		else
    			lineTxt = editor:GetLine(lineNr +1)
    		end
    		if y then
    			-- Markierung für Versionsfortschreibung gesetzt?
    			verMark = string.find(lineTxt, "[vVn]\r\n")
    			sVer, mustSave = Version(lineTxt, verMark)
    			if sExt == 'lua' then
    				t =  "-- TIME_STAMP   "..os.date("%Y-%m-%d %H:%M:%S   ")..sVer.."\r\n"
    				y = a + lineLen
    			else
    				t =  "#Region - Timestamp\r\n; "..os.date("%Y-%m-%d %H:%M:%S   ")..sVer.."\r\n#EndRegion - TimeStamp\r\n"
    				y = y +2
    			end
    			editor:SetSel(a,y)
    			editor:ReplaceSel(t)
    		end
    	else
    		mustSave = 1
    		editor:SetSel(0,1)
    		if editor:GetSelText() == '*' then
    			mustSave = 0
    			s = string.sub(s, 2)
    		end
    		editor:GotoPos(0)
    		if sExt == 'lua' then
    			t =  "-- TIME_STAMP   "..os.date("%Y-%m-%d %H:%M:%S   ")..sVer.."\r\n"
    			editor:SetText(t.."\r\n"..s)
    		else
    			t =  "#Region - Timestamp\r\n; "..os.date("%Y-%m-%d %H:%M:%S   ")..sVer.."\r\n#EndRegion - TimeStamp\r\n"
    			editor:SetText(t.."\r\n"..s)
    		end
    		caret = caret + string.len(t) +2
    	end
    	editor:EndUndoAction()
    	editor:GotoPos(caret)
    	if mustSave == 1 then SaveToVersionFolder(sDir, sName, sExt, sVer) end
    end
    -- TIME STAMP=================================================END
    Alles anzeigen
  • TimeStamp - erweitert zu kleiner Versionsverwaltung für (.au3 und .lua) alle Typen

    • BugFix
    • 16. Mai 2011 um 23:51

    EDIT [02.10.2021] - Eine neuere Version (kpl. überarbeitet) gibt es hier.

    EDIT [04.01.2019] - Mit v 1.4 wird das Skript allgemeingültig. Ohne weiter Änderungen am Skript kann jetzt jeder Dateityp in die Versionsverwaltung und/oder TimeStamp-Routine aufgenommen werden!

    ACHTUNG! Script breaking chance! DIE PROPERTIES MÜSSEN ZWINGEND GEÄNDERT WERDEN!

    Es wird nicht mehr für jeden Dateityp eine eigen Property erstellt, sondern wie folgt:

    Auflisten der Dateitypen, für die ein Timestamp gesetzt werden soll

    #~ TimeStamp setzen für folgende Dateitypen: EXT|EXT..

    Use.TimeStamp.With.Files=au3|lua|py

    Die Zeichen für Zeilenkommentare der verschiedenen Dateitypen müssen angegeben werden

    #~ Kommentarzeichen für einzeiligen Kommentar: EXT=ZEICHEN|..|..

    Line.Comment.Char=au3=;|lua=--|py=#

    Auflisten der Dateitypen, für die ein Versionsbackup gespeichert werden soll

    #~ Versions-Backup anwenden für folgende Dateitypen: EXT|EXT..

    Use.VersionBackUp.With.Files=au3|lua

    Version.Prefix und Version.Path.* bleiben unverändert.


    Hallo,
    ich habe die TimeStamp Funktion nun zu einer kleinen Versionsverwaltung für Skripte erweitert. Dabei habe ich mich allerdings auf eine zweistufige Versionierung (v Main.Sub) beschränkt.
    So gehts:
    In den User.properties wird festgelegt in welchem Pfad die Versionsbackups gespeichert werden sollen. Mit der Angabe von 'Default'  geschieht das im Skriptordner (ebenso bei fehlender Property oder Property ohne Wert), wird ein fester Ordner angegeben (ohne abschließenden Backslash!), wird dieser verwendet, mit 'no' wird keine Versionssicherung durchgeführt. Es lassen sich die in SciTE üblichen Pfadmakros (z.B. "$(SciteDefaultHome)" ) verwenden.

    Beim erstmaligen Speichern einer Datei wird (wenn gewünscht)
    - standardmäßig die Versionsnummer 'v 0.1' vergeben
    - im Pfad aus den .properties wird ein Unterverzeichnis der Form: \BackupVer_DATEINAME.EXT\ angelegt
    - in diesem Ordner wird eine Kopie der Datei als: DATEINAME[0.1].EXT erstellt

    Beim Speichern ohne Setzen eines Markers wird nur der TimeStamp aktualisiert.

    Es können folgende Marker gesetzt werden (direkt hinter die aktuelle Versionsnummer):
    - v Subversionsnr. wird um 1 erhöht
    - V Mainversionsnr. wird um 1 erhöht, Subversionsnr. wird auf 0 gesetzt
    - n die autom. Zählung ist nicht aktiv - aber eine per Hand eingetragene Änderung der Versionsnr. wird übernommen
    So werden die Marker gesetzt:
    Erhöhen Sub-Version:
    ;-- TIME_STAMP 2011-05-24 14:36:36 v 0.1v ==> ergibt dann nach dem Speichern: v 0.2

    Erhöhen Main-Version:
    ;-- TIME_STAMP 2011-05-24 14:36:36 v 0.1V ==> ergibt dann nach dem Speichern: v 1.0

    Setzen gewünschter Versions-Nr.:
    ;-- TIME_STAMP 2011-05-24 14:36:36 v 0.1
    ==> 0.1 ersetzen mit gewünschter Versions-Nr, z.B.: 0.5n ergibt dann nach dem Speichern: v 0.5

    NEU:
    Um von einem Skript keine Backups anzulegen einfach vor dem ersten Speichern ein * an die erste Position im Editor setzen. Dafür notwendige Codeänderung: s. Post #2

    Somit habe ich im Normalfall einen TimeStamp und lege bei Bedarf eine höhere Version mit Backup an.

    Da LUA ja keine Windows-orientierte Sprache ist, mußte ich einige Funktionen erst selbst zusammenbasteln (FileExists, FileCopy, FolderExists, FolderCreate). Nicht wundern, dass beim Erstellen des jeweiligen Versionsordners ganz kurz ein CMD-Window aufpopt. Aber da mußte ich den Umweg über die CMD nehmen, da LUA keine direkte Möglichkeit zum Erstellen eines Ordners bietet. <-- Behoben durch Einsatz der shell.dll.
    In meinen Tests hat bisher alles gut funktioniert, hoffe ihr werdet das dann bestätigen können. ^^

    Edit 17.05.2011:
    Manchmal muß man einfach nochmal drüber schlafen, sonst sieht man den Wald vor lauter Bäumen nicht. ;)
    Eine Kopie der bestehenden Datei anzulegen ist ja gar nicht möglich, da die Aktion bei "BeforeSave" stattfindet. Somit wurde zum Einen der alte Inhalt gespeichert (mit falscher VersNr) und zum Anderen crashte es bei einer neuen Datei, da dort die zu kopierende ja noch gar nicht existierte.
    Habe diesen Bug jetzt beseitigt und schreibe den aktuellen Editorinhalt in das Versionsbackup.

    Dazu sollte dann die SciTEStartup.lua so aussehen

    geändert 29.05.
    Code
    --------------------------------------------------------------------------------
    -- SciTE startup script.
    --------------------------------------------------------------------------------
    -- A table listing all loaded files.
    LoadLuaFileList = { }
    --------------------------------------------------------------------------------
    -- LoadLuaFile(file, directory)
    --
    -- Helper function for easily loading Lua files.
    --
    -- Parameters:
    --    file - The name of a Lua file to load.
    --    directory - If specified, file is looked for in that directory.  By default,
    --         this directory is $(SciTEDefaultHome)\Lua.
    --------------------------------------------------------------------------------
    function LoadLuaFile(file, directory)
        if directory == nil then
            directory = props["SciteDefaultHome"] .. "\\Lua\"
        end
        table.insert(LoadLuaFileList, directory .. file)
        dofile(directory .. file)
    end    -- LoadLuaFile()
    
    
    -- Load all the Lua files.
    LoadLuaFile("Class.lua")    -- Always load first.
    LoadLuaFile("Common.lua")    -- Always load second.
    LoadLuaFile("AutoItPixmap.lua")
    LoadLuaFile("AutoHScroll.lua")
    LoadLuaFile("AutoItAutoComplete.lua")
    LoadLuaFile("LoadSession.lua")
    LoadLuaFile("AutoItIndentFix.lua")
    LoadLuaFile("EdgeMode.lua")
    LoadLuaFile("SmartAutoCompleteHide.lua")
    LoadLuaFile("Tools.lua")
    LoadLuaFile("AutoItTools.lua")
    LoadLuaFile("AutoItGotoDefinition.lua")
    LoadLuaFile("AutoCloseBraces.lua")  -- wenn diese Datei nicht verwendet wird ==> mit '--' auskommentieren oder löschen
    
    
    -- Start up the events (Calls OnStartup()).
    EventClass:BeginEvents()
    
    
    -- Erst nach Registrierung der EventClass werden eigene Dateien geladen
    LoadLuaFile("AutoStampSaveVersion.lua")  -- enthält Event: "OnBeforeSave"
    Alles anzeigen


    Die Datei "AutoStampSaveVersion[1.4].lua" speichern und umbenennen zu "AutoStampSaveVersion.lua")


    Und hier die Anpassungen in den SciTEUser.properties

    geändert 04.01.19
    Code
    # END => DO NOT CHANGE ANYTHING BEFORE THIS LINE  #-#-#-#-#-#
    #~ == MY SPECIAL SETTINGS =====================BEGIN
    
    #~ TimeStamp setzen für folgende Dateitypen:  EXT|EXT..
    Use.TimeStamp.With.Files=au3|lua|py
    
    #~ Kommentarzeichen für einzeiligen Kommentar: EXT=ZEICHEN|..|..
    Line.Comment.Char=au3=;|lua=--|py=#
    
    #~ Versions-Backup anwenden für folgende Dateitypen:  EXT|EXT..
    Use.VersionBackUp.With.Files=au3|lua
    
    Version.Prefix=BUVer_
    #~ Pfad für Version Backup Ordner [VER_DIR]:
    #~ WICHTIG!:    Pfad NICHT in Quotierung!
    #~                KEIN folgender Backslash!
    #~        "Version.Path.*=default"    - erstellt Unterverzeichnis in aktuellem Skript-Ordner (ebenso, wenn Property nicht vorhanden oder ohne Wert)
    #~        Ordnername:    $(Version.Path.ext)\$(Version.Prefix)FILENAME.EXT\
    #~        Dateiname:    \FILENAME[Version-Number].EXT
    Version.Path.au3=C:\Code\VersionBackup\au3
    Version.Path.lua=C:\Code\VersionBackup\lua
    #~ == MY SPECIAL SETTINGS =======================END
    Alles anzeigen

    Edit 21.05.2011:
    Ich habe den Code nochmal überarbeit, die Funktionen jetzt alle sauber in ein Array gepackt und eine kleine Funktionserweiterung vorgenommen: Wird ein Skript beim erstmaligen Speichern von der Versionsverwaltung ausgenommen (Asterisk an erster Editorposition), so wird in diesem Fall auch nur der Timestamp gesetzt. Auch bei späterem Speichern bleibt dies so. Aber man kann jederzeit durch Markieren mit 'v' oder 'V' das Skript in die Versionsverwaltung aufnehmen.
    Ich habe es soeben im EN-Forum gepostet, deshalb vorerst mal nur der Link dorthin: AutoStampSaveVersion.lua

    Edit 29.05.2011
    Die im letzten Edit benannten Änderungen sind jetzt auch hier im Skript. Alle nicht global benötigten Funktionen sind jetzt auch als lokal erstellt.
    Zusätzlich erweitert: Beim Speichern springt die Cursorposition nicht mehr an den unteren Editorrand, die Ansicht im Editor ist identisch zu 'VorSpeichern'.
    Aktuelle Version: "v 1.1"


    Edit: 16.05.2014
    Nach Jahren mal wieder was Neues hier. Ich habe jetzt die shell.dll integriert, somit gibt es kein aufpopendes Fenster mehr, wenn ein neuer Ordner beim Sichern erstellt wird.
    Weiterhin habe ich die Darstellung des TimeStamps verändert, mit der #Region gefällt mir das nicht mehr. Es wird jetzt in dieser Form ausgegeben:
    ;-- TIME_STAMP 2014-05-16 12:41:54 v 0.1
    Es ist eine zusätzliche Property in der SciTEUser.properties festzulegen: Version.Prefix=BUVer_
    Bisher wurde automatisch der Präfix "BUVer_" verwendet bei der Erstellung des Ordners für eine neu zu sichernde Datei. Das kann jetzt vom User festgelegt werden.
    Ansonsten ändert sich nichts an der Vorgehensweise.
    Um die shell.dll einzubinden, empfehle ich folgendes Vorgehen:

    Installation shell.dll


    - In der SciTEUser,properties eine Property erstellen für die eigenen Lua-Pfade Lua.User.Scripts.Path=C:\Code_AutoIt\LUA
    - In diesen Pfad die shell.dll kopieren
    - In der SciTEStartup.lua am Anfang einfügen
    local sUserLua = props["Lua.User.Scripts.Path"]

    LUA_USER_PATH = sUserLua .. "\\?.dll;" .. sUserLua .. "\\?\\?.dll;"
    package.cpath = LUA_USER_PATH .. package.cpath

    Jetzt werden die in diesen Pfaden gespeicherten Dll beim Start von SciTE geladen.

    Die bereits vorhandenen TimeStamps können mit der beigefügten "ReplaceTimeStamp.au3" auf die neue Version geswitcht werden. Einfach den Root auswählen, alle *.au3 werden rekursiv von dort ausgelesen und vorhandene TimeStamps auf die neue Version geswitcht. Sicherheitshalber wird zuerst im Root ein Ordner ".\BAK_TimeStamp\" erstellt, in den alle gefundenen au3-Dateien in der vorhandenen Ordnerstruktur gesichert werden.

    Aktuelle Version: "v 1.4"

    Dateien

    AutoStampSaveVersion[1.4].lua 8,87 kB – 418 Downloads AutoStampSaveVersion[1.2].lua 7,87 kB – 573 Downloads ReplaceTimeStamp.au3 4,63 kB – 610 Downloads shellDLL.zip 38,39 kB – 565 Downloads
  • [Teamspeak 3] Autoit.de - Online Community

    • BugFix
    • 16. Mai 2011 um 10:32
    Zitat von Kev

    UMFRAGE hinzugefügt.


    Da fehlt aber eine Antwortmöglichkeit: "nie"
    Ich persönlich schreibe lieber, als dass ich rede. Somit ergibt sich für mich überhaupt keine Notwendigkeit eines TS. Zumal das geschriebene Wort den unschätzbaren Vorteil hat, dass man jederzeit nachlesen kann, was bereits 'besprochen' wurde, wenn man das Thema später weiterbehandeln möchte. ;)

  • ODBC-Zugriff auf eine Paradox-DB

    • BugFix
    • 16. Mai 2011 um 09:58

    Guckst du: hier ;)

  • WD - oder: Wo lassen manche Hersteller denken...

    • BugFix
    • 14. Mai 2011 um 15:14

    Andere NAS, die ich bisher genutzt habe (DLink, Buffalo etc.) haben zwar auch eine (aus meiner Sicht absolut überflüssige) Konfigurationssoftware - aber dort steht dann zumindest gaaaaanz kleingedruckt im Manual die aktuelle IP des Gerätes im Werksauslieferungszustand. Damit gelangt man dann immer auf das Web-Interface zur Konfiguration.

    Aber mir ist noch etwas aufgefallen:
    HTML ist out. Der User hat gefälligst zu akzeptieren, dass er über das Interface Embedded Javascript oder (schlimmer) Flash-Inhalte serviert bekommt. Dass das nicht immer gut geht ist klar. Ein Win2K-PC, der locker seine Dienste im LAN noch tun kann, erreicht zwar dann die Interface Startseite - sieht aber keine Inhalte wegen mangelnder Unterstützung für das OS. :wacko:

  • WD - oder: Wo lassen manche Hersteller denken...

    • BugFix
    • 14. Mai 2011 um 14:21

    Hi,
    ich hatte das "Vergnügen" in zwei LAN-Umgebungen (Intranet) als Netzwerkspeicher WD-Produkte zu integrieren.
    Zum Einen das My Book Live als gemeinsamer Speicherplatz und zum Anderen das WD ShareSpace als Datenspeicher/Sicherungsserver im RAID 5.
    Rein hardwaremäßig ist an den Produkten nichts auszusetzen. Aber die Software!!
    Obwohl beide Produkte vom Hersteller ausdrücklich zur Nutzung in Heimnetzen (impliziert für mich auch eine Intranetumgebung) geeignet sind, ist es ZWINGEND erforderlich einen Internetzugang zu haben um überhaupt die Konfigurationssoftware anwenden zu können. Anderenfalls teilt diese Software trocken mit, das kein Device gefunden wurde!
    Also schleppe ich die Geräte zu einem Ort mit INet-Anbindung um erstmalig auf das User-Interface zu gelangen. Dort ließen sich die Geräte dann problemlos mit einer fixen IP ausstatten, sodass ich die Konfigurationsoberfläche auch im LAN erreichen konnte.
    Es ist mir absolut unverständlich, dass eine Firma wie WD keinen Gedanken daran verschwendet, dass es eventuell Anwender mit erhöhtem Sicherheitsbedürfnis (Intranet) oder auch Anwender ohne physischen Zugang zum Internet gibt. Zumal die Grundfunktion eines NAS nunmal nicht das Web-Sharing von Files ist.
    Aus meiner Sicht hat ein Internetzugang auf einer produktiven PC-Einheit nichts verloren. Diese Sichtweise hat mir (und meinen Kunden) die letzten 15 Jahre 100%-ige Schädlingsfreiheit garantiert. Denn die Mehrzahl der Anwender kann es sich nicht leisten einen IT-Fachmann vorzuhalten nur um ständig und sofort alle Systeme schützen zu können.
    Allein der Internetzugang an sich stellt eine Gefahr da - völlig dahingestellt, ob diese Gefahr auch Wirklichkeit wird. (Vergleichbar mit 'sicheren' Atomkraftwerken :whistling: ).

    Mein Fazit zu WD
    Technik = 1
    Komfort = 5

    Als kleiner Nachtrag:
    Es gibt solche Szenarien aber noch eine Stufe schlimmer - als NAS ausgewiesene Geräte, die zum Zugang einen aktiven! Internetzugang verlangen, der dann über die Herstellerseite ein Redirection auf das LAN durchführt. (Produktname ist mir gerade entfallen, hatte ich sofort von meiner mentalen Festplatte gestrichen ;))

  • Array: If-Abfrage einer Zeile

    • BugFix
    • 5. Mai 2011 um 21:17

    Vielleicht solltest du einfach mal mein 2D-Array nachvollziehen... :whistling:
    Und vor allem die Syntax nachlesen! In der äußeren Schleife verwendest du den Ubound für die Zeilen, aber in der inneren Schleife mußt du den Ubound(Array,2) verwenden.
    Steht aber auch genau so in meinem Tut, das du ja bereits gelesen hast.. :wacko:

  • störprogrammbeender

    • BugFix
    • 30. April 2011 um 21:54

    Antwort: Nein - und laß es bleiben. Verwende ordentliche Antiviren- und Defenderprogramme. Dann brauchst du dich um den Schei.. nicht zu kümmern.

  • Los gehts

    • BugFix
    • 30. April 2011 um 11:38

    Was mir beim Skripten mit LUA an besonderen Unterschieden auffällt, werde ich mal extra erwähnen:

    Variablendeklaration/-Wertzuweisung
    - Variablen ohne Wertzuweisung können, genau wie in AutoIt, durch Kommata getrennt hintereinander deklariert werden.
    - Nach Deklaration einer Variablen mit Wertzuweisung darf keine weitere Deklaration mit Wertzuweisung durch Kommata getrennt erfolgen.
    - Aber: Es können weitere leere Variablen kommagetrennt deklariert werden.
    - Mehrere Deklarationen mit Wertzuweisung werden hintereinander geschrieben nur durch Leerzeichen getrennt.

    Code
    local a, b, c			-->> OK
    local a = 5, b = 6, c = 7	-->> FEHLER
    local a = 5, b, c		-->> OK
    local d = 5 e = 6 f = 7		-->> OK

    ContinueLoop
    Gibt es in LUA gar nicht. Hier muß man sich im Programmierverhalten umstellen. ContinueLoop ist strenggenommen eine 'GoTo'-Anweisung und somit wohl von den Entwicklern verpönt. :whistling:
    Ich habe einige, recht aufwändige Iterationskonstrukte gefunden, die ein Verhalten wie ContinueLoop ermöglichen sollen - aber solange das nicht nativ codiert ist verliert man dann im Code erst recht die Übersicht.

    Was mir fehlte, waren die kleinen Hilfsmittel zum Debuggen: DebugToConsole/~MsgBox.
    Ich habe dazu entsprechende Varianten erstellt. Die von Jos für AutoIt geschaffenen Varianten habe ich aber außen vor gelassen. Diese können nur simple Variablenformen erfassen, Arrays werden nicht erkannt. Ist allein mit RegEx auch nicht zu lösen.
    Meine Variante ist zwar etwas aufwändiger, erkennt aber auch Variablen"monster" der Form: "$arAA [ UBound( $arBB ) - 1 ] [ $i ]" ^^
    Einzige Bedingung: Der Cursor muß auf (oder links von) dem Variablenstamm stehen (hier also $arAA).
    In Lua-Skripten ist die Erkennung noch etwas schwieriger, da Variablen keinen markanten Anfang haben. Somit können Array(Table)-konstrukte nicht sicher erkannt werden, wenn Leerzeichen in den Klammern sind.
    Daher ist die Variablenerkennung für Lua-Skripte u.U. noch etwas fehlerbehaftet, also besser keine Leerzeichen in Klammern verwenden.

    Geändert: s. Post #4

    Zur besseren Wartbarkeit der eigenen Dateien und für gute Übersicht, empfiehlt es sich z.B. eine Datei "EigeneTools.lua" zu erstellen, in der man die allgemein verfügbaren Funktionen bereitstellt.
    Ich habe meine "EigeneTools.lua" mit angehängt, mit Funktionen für TimeStamp und DebugConsole/MsgBox, jeweils selbstselektierend für .lua oder .au3 .
    Diese darf aber erst nach Registrierung der EventClass geladen werden, damit Skripte, die auf Events zurückgreifen (z.B. TimeStamp), nicht ins Leere laufen.
    Damit MsgBox in LUA-Skripten möglich ist, muss ein zusätzliches Modul geladen werden:
    - angehängten Ordner "LuaLib" (entpacken) als Unterordner in "..\Scite\Lua" einfügen
    - in "SciTEStartup.lua" muß die Dll geladen werden, hier mal meine Startup:

    SciTEStartup.lua
    Code
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    -- SciTE startup script.
    --------------------------------------------------------------------------------
    
    
    -- Externe Module bereitstellen
    package.path  = props["SciteDefaultHome"].."\\Lua\\LuaLib\\?.lua;"..package.path
    package.cpath = props["SciteDefaultHome"].."\\Lua\\LuaLib\\?.dll;"..package.cpath
    -- print(package.cpath)
    -- Dll laden
    require 'shell'
    -- test dll
    --~ if shell then
    --~   table.foreach(shell, print)
    --~ end
    
    
    -- A table listing all loaded files.
    LoadLuaFileList = { }
    --------------------------------------------------------------------------------
    -- LoadLuaFile(file, directory)
    --
    -- Helper function for easily loading Lua files.
    --
    -- Parameters:
    --	file - The name of a Lua file to load.
    --	directory - If specified, file is looked for in that directory.  By default,
    -- 		this directory is $(SciTEDefaultHome)\Lua.
    --------------------------------------------------------------------------------
    function LoadLuaFile(file, directory)
    	if directory == nil then
    		directory = props["SciteDefaultHome"] .. "\\Lua\\"
    	end
    	table.insert(LoadLuaFileList, directory .. file)
    	dofile(directory .. file)
    end	-- LoadLuaFile()
    
    
    -- Load all the Lua files.
    LoadLuaFile("Class.lua")	-- Always load first.
    LoadLuaFile("Common.lua")	-- Always load second.
    LoadLuaFile("AutoItPixmap.lua")
    LoadLuaFile("AutoHScroll.lua")
    LoadLuaFile("AutoItAutoComplete.lua")
    LoadLuaFile("LoadSession.lua")
    LoadLuaFile("AutoItIndentFix.lua")
    LoadLuaFile("EdgeMode.lua")
    LoadLuaFile("SmartAutoCompleteHide.lua")
    LoadLuaFile("Tools.lua")
    LoadLuaFile("AutoItTools.lua")
    LoadLuaFile("AutoItGotoDefinition.lua")
    LoadLuaFile("AutoCloseBraces.lua")
    
    
    -- Start up the events (Calls OnStartup()).
    EventClass:BeginEvents()
    
    
    -- Erst nach Registrierung der EventClass werden eigene Dateien geladen
    LoadLuaFile("EigeneTools.lua")
    
    
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    Alles anzeigen


    Um diese Debug-Module zu aktivieren, müssen zuerst die in SciTE4AutoIt aktiven Module abgeschaltet werden:
    - .au3 Datei im Editor öffnen
    - Ctrl+1 öffnet "SciTE Config"
    - "Tools Selection"
    - Checkboxen: 24, 25, 26 deaktivieren
    - "Update" klicken

    in: "..\SciTEUser.properties"
    einfügen:

    in SciTEUser.properties
    Code
    # END => DO NOT CHANGE ANYTHING BEFORE THIS LINE  #-#-#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #...
    #...
    #~ Speichern mit TimeStamp J/N (1/0)
    SetTimeStampAU3=1
    SetTimeStampLUA=1
    #...
    #...
    #~ Debug To MsgBox
    command.name.43.*=Debug To MsgBox
    command.43.*=DebugToMsgBox
    command.mode.43.*=subsystem:lua,savebefore:no
    command.shortcut.43.*=Ctrl+Alt+D
    
    
    #~ Debug To Console
    command.name.42.*=&Debug To Console
    command.42.*=DebugToConsole
    command.mode.42.*=subsystem:lua,savebefore:no
    command.shortcut.42.*=Alt+D
    #...
    #...
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    # START: DO NOT CHANGE ANYTHING AFTER THIS LINE     #-#-#-#-#
    # Created by SciTEConfig
    #------------------------------------------------------------
    Alles anzeigen

    In meinem SciTE4AutoIt funktioniert seltsamerweise die geladene Dll mit der MsgBox-Funktion nicht. Raupi hatte getestet und bei ihm läuft es in der Umgebung.
    Da ich selbst eine andere SciTE-Version verwende vermute ich mal, dass es zu Konflikten zwischen den beiden Versionen kommt. Wenn ihr nur ein SciTE installiert habt, sollte somit die MsgBox auch in Lua funktionieren.
    Syntax: shell.msgbox(TEXT, TITEL [,FLAG=0])
    Mehr über die Funktionen der 'shell' könnt ihr im Ordner LuaLib, in der shell.html lesen.

    Dateien

    LuaLib.zip 105 kB – 452 Downloads
  • RegEx Allgemeine Frage

    • BugFix
    • 29. April 2011 um 09:36
    Zitat von Ilse

    Sind die in allen Sprachen identisch?


    Das richtet sich etwas nach den verwendeten RegEx-Engines. Aber wenn du es einmal verstanden hast, fällt es nicht schwer evtl. Syntaxunterschiede anzuwenden. Das Erkennungsprinzip ist grundsätzlich sehr ähnlich.

  • Lua - ich (wir) lerne(n)

    • BugFix
    • 27. April 2011 um 13:34
    Zitat von DFPWare

    okay io kann aus dateien lesen/schreiben, aber wie soll ich damit jetzt auf die console zugreifen oder consoleread kopieren?=)


    Hast du es überhaupt schon probiert? Ich nehme mal an: Nein - denn sonst würdest du die Fragen gar nicht stellen.
    Auch hier gilt, wie überall: ohne zu wissen, welchen Code du schon getestet hast, kann man dir schlecht helfen. ;)

  • Lua - ich (wir) lerne(n)

    • BugFix
    • 27. April 2011 um 00:25
    Zitat von DFPWare

    wie bei c++ cin


    Ich kenne mich mit C++ kaum aus. Ist das vergleichbar mit einer InputBox in AutoIt oder eher eine Konsoleneingabe?

  • Lua - ich (wir) lerne(n)

    • BugFix
    • 26. April 2011 um 22:21
    Zitat von Marthog

    Ne, ich meine eine Einbindung in AutoIt. Sodass man von AutoIt aus LUA-funktionen aufrufen kann, sowie Funktionen bereitstellen kann.


    Achso, dann hatte ich das mißverstanden.
    Bleibt die Frage, ob die Lua-Skripte, eingebunden in AutoIt, dann auch im kompilierten AutoIt-Skript laufen sollen?
    Also lokales Ausführen ist sicher nicht das Problem. Aber in einem kompilierten Skript? Hab ich mir bisher noch keine Gedanken gemacht.

  • Lua - ich (wir) lerne(n)

    • BugFix
    • 26. April 2011 um 22:12
    Zitat von DFPWare

    also wofür ist das jetzt gut?


    Nun, öffne doch einfach mal die Datei "..\AutoIt3\SciTE\Lua\AutoItTools.lua". Und siehe da - dort findest du Tools des täglichen AutoIt-Gebrauchs.
    Ich möchte hier die Möglichkeit eröffnen eigene Tools zu erstellen, die das Skripten in AutoIt noch komfortabler gestalten.
    Darüber hinaus ist LUA eine sehr mächtige Skriptsprache, die m.M. nach in einigen Bereichen AutoIt sogar weit überlegen ist. Und hier seinen Horizont zu erweitern und evtl. mal Lösungen auf andere Art vorzunehmen kann doch nicht schaden.
    (Und wer nicht will, der muß ja nicht.. ;))

  • Lua - ich (wir) lerne(n)

    • BugFix
    • 26. April 2011 um 21:56
    Zitat von Marthog

    Gibt es eigentlich eine UDF um lua-skripte auszuführen? Wenn nicht, könnte ich schnell eine schreiben.


    Du kannst LUA-Skripte aus SciTE heraus ausführen, die notwendigen Schritte dazu habe ich im Startpost beschrieben.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™