Bibliotheken (Dll-Dateien, Lua-Skripte) in SciTE verwenden

    • Offizieller Beitrag

    Es können 2 Arten von Bibliotheken verwendet werden: Dll- und Lua-Bibliotheken.
    Der Aufruf im Skript erfolgt mit:

    Code
    variable = require "Bibliotheksname"  -- wichtig: OHNE Dateiendung


    Die Funktionen lassen sich dann aufrufen mit:

    Code
    variable.funktionsname(parameter)

    • Registrieren von Bibliotheken

    Damit die Bibliotheken von "require" gefunden werden, müssen die Speicherpfade in der "SciTEStartup.lua" registriert werden.
    Dll-Dateien werden registriert in "package.cpath", Lua-Skripts in "package.path".
    Damit die eigenen Skripte und Bibliotheken auch nach einem Update von SciTE noch vorhanden sind, darf man diese keinesfalls im Ordner "..\SciTE\LUA" speichern. Dieser wird bei einem Update ungefragt überschrieben. Es empfiehlt sich einen eigenen Ordner dafür anzulegen und diesen Pfad in den "SciTEUser.properties" zu speichern.
    Ich habe dort z.B. eingetragen: "Lua.User.Scripts.Path=C:\Code_AutoIt\LUA". Wichtig: Ohne abschließenden Backslash! Nun kann man diesen Pfad überall innerhalb SciTE abfragen mit: "props['Lua.User.Scripts.Path']".

    Es können leider nicht alle Dll auch in SciTE genutzt werden. progandy hatte das schon näher beschrieben.

    Hier mal als Bsp., wie man sowohl Dll- als auch Lua-Dateien im eigenen Skriptpfad registriert. Die Art der Registrierung ermöglicht, dass die Dateien direkt im benannten Pfad gespeichert sind oder in einem Unterordner, der denselben Namen wie die Datei trägt.

    Code
    local sUserLua = props["Lua.User.Scripts.Path"]
    
    
    LUA_USER_PATH = sUserLua .. "\\?.dll;" .. sUserLua .. "\\?\\?.dll;"
    package.cpath = LUA_USER_PATH .. package.cpath
    
    
    LUA_USER_LUA = sUserLua .. "\\?.lua;" .. sUserLua .. "\\?\\?.lua;"
    package.path = LUA_USER_LUA .. package.path

    • Eigene Bibliotheken erstellen

    Das Erstellen eigener Bibliotheken (Lua-Skript) ist eine einfache Sache. Wobei sich die Möglichkeit bietet innerhalb der Bibliothek eigene Funktionsnamen zu verwenden und für den Anwender andere Namen zur Verfügung zu stellen.

    Muster (gleiche Namen)
    Muster (mit Namen-Routing)


    Man kann natürlich, wie bei den Includes in AutoIt, auch Bibliotheken in Bibliotheken einbinden.

    Bsp. meine WinAPI

    NB: Da ich gerade erst die aktuelle Version von SciTE installiert habe, ist mir folgendes aufgefallen:
    Um Lua Skripte in SciTE auszuführen war es bei der vorigen Version ausreichend, in der SciTEUser.properties einzutragen:
    command.go.$(file.patterns.lua)=dofile $(FilePath).
    In der aktuellen Version muss zusätzlich auch das Subsystem angegeben werden:
    command.go.subsystem.$(file.patterns.lua)=3

    • Offizieller Beitrag

    Inzwischen hat sich so einiges an Funktionen angesammelt. Ich werde diese mal nach und nach in ordentliche Form packen und als UDF in diesem Thread speichern. Die Auflistung in diesem Post und in den Folgeposts dann für jede Bibliothek ein Beitrag.

    1. Dictionary Objekt - Erstellen und Verwalten eines Dictionarys in Objektform.
    • Offizieller Beitrag