Double Commander

2.15. Lua-Skripting

Inhalt

1. Einführung
2. Benötigte DLL
3. Double Commander-Bibliotheken
3.1. Bibliothek DC
3.1.1. Beispiel für DC.ExecuteCommand
3.2. Systembibliothek
3.2.1. Rückgabewerte von SysUtils.FileGetAttr
3.2.2. Beispiel für SysUtils.FileGetAttr
3.2.3. Beispiel für FindFirst, FindNext und FindClose
3.3. Zwischenablagebibliothek
3.3.1. Beispiel für die Clipbrd-Bibliothek
3.4. Dialogbibliothek
3.4.1. In Dialogs.MessageBox angezeigte Schaltflächen
3.4.2. Fensterstile von Dialogs.MessageBox
3.4.3. Standardschaltfläche von Dialogs.MessageBox
3.4.4. Rückgabewerte von Dialogs.MessageBox
3.4.5. Beispiel für Dialogs.MessageBox
3.4.6. Beispiel für Dialogs.InputQuery
3.5. UTF-8-Bibliothek
3.6. Zeichenbibliothek
3.7. Betriebssystembibliothek
4. Index

1. Einführung

Ausführliche Informationen zur Programmiersprache Lua finden Sie auf der Lua-Website.

Double Commander kann Lua-Skripte über den Befehl cm_ExecuteScript ausführen.
Skriptparameter müssen im Originalzustand ohne Maskierung (keine Anführungszeichen oder „\“) übergeben werden. Dazu müssen wir die Variable %"0 verwenden: Verwenden Sie beispielsweise %"0%p0 anstelle von %p0 für die Datei unter dem Cursor und %"0%D anstelle von %D für das aktuelle Verzeichnis. Andernfalls, wenn Double Commander automatisch Anführungszeichen hinzufügt, werden diese als Teil des Parameters übergeben, was Sie berücksichtigen müssten.
Um eine Liste aller ausgewählten Dateien abzurufen, können wir Variablen (%LU, %FU oder %RU) oder interne Befehle (cm_SaveSelectionToFile, cm_SaveFileDetailsToFile, cm_CopyFullNamesToClip oder cm_CopyFileDetailsToClip) verwenden. Beispielsweise können wir %p verwenden: In diesem Fall übergibt Double Commander die Namen aller ausgewählten Dateien in einer einzigen Zeile, getrennt durch Leerzeichen.

Es ist auch möglich, Inhalts-Plugins mit Lua-Skripten zu schreiben. Beispiele finden Sie im Programmordner (plugins/wdx/scripts). Im Wiki gibt es eine eigene Seite zur Entwicklung von Plugins. Einschränkung: Nur die folgenden Datentypen werden unterstützt:

Die obige Liste enthält die Namen aus den Header-Dateien. In Lua-Skripten müssen wir die in Klammern angegebenen numerischen Werte verwenden.


Über Textkodierung

Alle unten beschriebenen zusätzlichen Funktionen akzeptieren UTF-8-kodierte Zeichenfolgenparameter und geben UTF-8-kodierte Zeichenfolgen zurück (mit Ausnahme der Funktion LazUtf8.ConvertEncoding).

Einige Funktionen in den Standard-Lua-Bibliotheken wurden durch Funktionen von Double Commander oder Free Pascal/Lazarus ersetzt (oder neue Funktionen wurden geschrieben), um UTF-8-Unterstützung zu bieten.

Beim Schreiben von Plugins sollten wir ebenfalls UTF-8 für Textdaten verwenden (ft_multiplechoice, ft_string und ft_fulltext).

Speichern Sie Skripte bitte in der UTF-8-Kodierung ohne BOM.


Besondere Hinweise

Die Automatisierung mit Lua bietet enorme Möglichkeiten, aber in manchen Fällen müssen bestimmte Details beachtet werden. Wir versuchen, diese in diesem Unterabschnitt zu sammeln.

1. Wenn die Optionen Automatisches Aktualisieren und Dateiliste in separatem Thread laden aktiviert sind, arbeitet die Aktualisierungsfunktion asynchron. Da das Skript jedoch im Hauptthread von Double Commander ausgeführt wird, kann dies unter bestimmten Umständen die Ausführung Ihres Skripts beeinträchtigen. Beispielsweise kann die aufeinanderfolgende Ausführung von Navigationsbefehlen fehlschlagen (z. B. bei großen Verzeichnissen oder langsamen Datenträgern). Versuchen Sie in diesem Fall, Dateiliste in separatem Thread laden zu deaktivieren oder eine alternative Lösung zu finden.

Wenn Ihr Skript eine neue Datei im aktuellen Panel erstellt oder eine vorhandene umbenennt, danach aber nicht beendet wird, sondern zusätzliche Aktionen ausführt (z. B. eine Datei auswählt oder den Cursor bewegt), werden diese Aktionen unter Umständen nicht wirksam: Möglicherweise befinden sich noch nicht alle Dateien im Panel und Sie müssen zuerst den Befehl cm_Refresh aufrufen. Unter den genannten Bedingungen wird cm_Refresh ebenfalls asynchron ausgeführt, sodass Double Commander eventuell nicht genügend Zeit hat, die Dateiliste nach Ihren Änderungen vollständig zu aktualisieren.

Da das automatische Aktualisieren und das Laden der Dateiliste in einem separaten Thread komfortable Funktionen des Dateimanagers sind, wurde durch Experimente eine stabile Arbeitsmethode gefunden, um die Kontrolle vorübergehend an das Programm zurückzugeben und die Dateiliste vollständig aktualisieren zu lassen:

DC.ExecuteCommand("cm_Refresh")
i = 10
while i > 0 do
  SysUtils.Sleep(10)
  DC.ExecuteCommand("")
  i = i - 1
end

2. Die Lua-Funktion io.open verwendet die Standard-C-Funktion fopen: Im Textmodus kann diese Funktion beim Lesen und Schreiben Zeilenenden (CRLF, LF oder CR) konvertieren, was zu unerwarteten Ergebnissen führen kann. Wenn Sie mit Dateien arbeiten, die unterschiedliche Zeilenenden aufweisen, oder plattformübergreifende Skripte schreiben, müssen Sie dies berücksichtigen. Praktischer ist es meist, den Binärmodus zu bevorzugen.

3. Unter Linux und anderen Unix-ähnlichen Betriebssystemen wird beim Aufruf der Funktion ContentGetValue für den Dialog Dateieigenschaften das Flag CONTENT_DELAYIFSLOW (vierter Parameter mit dem Wert 1) übergeben. Dies verhindert Verzögerungen beim Öffnen des Fensters: Wenn die Datenabfrage langsam ist, können wir diese Daten ausschließen, indem wir einfach den Flag-Wert prüfen und nil für diese Felder oder das Plugin zurückgeben.

4. Wenn das Plugin eine leere Zeichenfolge zurückgeben soll, ist die Übergabe von nil schneller als die von "".

2. Benötigte DLL

Um Lua-Skriptdateien interpretieren zu können, wird eine Lua-DLL (bzw. gemeinsam genutzte Bibliothek) benötigt. Double Commander unterstützt die Versionen 5.1 bis 5.4.

Wir können Bibliotheksdateien aus dem LuaJIT-Projekt verwenden. LuaJIT kombiniert einen in Assembler geschriebenen Hochgeschwindigkeits-Interpreter mit einem fortschrittlichen JIT-Compiler. Darüber hinaus erhalten wir die FFI-Bibliothek, mit der externe C-Funktionen aufgerufen und C-Datenstrukturen direkt aus reinem Lua-Code verwendet werden können.

Die Windows-Versionen von DC enthalten standardmäßig die Lua-DLL (ab DC 0.9.7 aus dem LuaJIT-Projekt). Auf anderen Systemen können wir sie über den Paketmanager suchen und installieren oder selbst kompilieren. Wenn wir eine 64-Bit-Version von DC verwenden, muss auch die DLL in der 64-Bit-Version vorliegen.

Standardmäßig sucht DC in seinem Verzeichnis und in den Systemverzeichnissen nach einer Datei namens lua5.1.dll (Windows), liblua5.1.so.0 (Unix oder GNU/Linux) oder liblua5.1.dylib (macOS). Wir können den Dateinamen (und Pfad) im Parameter Zu verwendende Lua-Bibliotheksdatei ändern.

3. Double Commander-Bibliotheken

Double Commander stellt unseren Lua-Skripten mehrere Funktionsbibliotheken zur Verfügung.

Nachfolgend finden Sie eine Liste dieser Bibliotheken.

Liste der Bibliotheken
BibliotheksnameSkriptnameKurzbeschreibung
DCDouble Commander-spezifische Funktionen
SysUtilsVerschiedene Systemfunktionen
ClipbrdBietet externe Zwischenablagefunktionen
DialogsInteraktion mit dem Benutzer
LazUtf8UTF-8-Zeichenfolgenfunktionen
CharInformationen über Zeichen abrufen
osBetriebssystembezogene Funktionen

3.1. Bibliothek DC

Diese Bibliothek enthält Double Commander-spezifische Funktionen.

Sie stellt alle ihre Funktionen in der Tabelle DC bereit.

Bibliothek DC
FunktionsnameBeschreibung

DC.LogWrite(sMessage, iMsgType, bForce, bLogFile)

Schreibt eine Nachricht in das Protokollfenster (Log):

  • sMessage : Der Nachrichtentext.
  • iMsgType : Der Nachrichtentyp: 0 - Information, 1 - Erfolg, 2 - Fehler.
  • bForce : Boolescher Wert; wenn true, wird das Protokollfenster eingeblendet, falls es nicht sichtbar ist.
  • bLogFile : Boolescher Wert; wenn true, wird die Nachricht auch in die Protokolldatei geschrieben.

iPanel = DC.CurrentPanel()

Gibt das aktive Panel zurück: 0 für das linke Panel, 1 für das rechte Panel.

DC.CurrentPanel(iPanel)

Setzt das aktive Panel: iPanel gleich 0 aktiviert das linke Panel, gleich 1 das rechte Panel.

DC.ExecuteCommand(sCommand, Param1, Param2,...,ParamX)

Ermöglicht dem Skript den Aufruf von internen Befehlen von Double Commander.

sCommand ist der eigentliche Name des internen Befehls.

Wir können beliebig viele Parameter Param... übergeben, die vom Befehl unterstützt werden.

Zusätzlich zu internen Befehlen können wir in Skripten den speziellen Befehl cm_ExecuteToolBarItem verwenden, mit dem Schaltflächen der Symbolleiste über eine eindeutige Kennung (ID) aufgerufen werden können (dies ermöglicht es, Tastenkombinationen für Symbolleistenschaltflächen zuzuweisen). Dieser Befehl wird ähnlich wie ein normaler interner Befehl verwendet (siehe Beispiel unten) und akzeptiert folgende Parameter:

Parameter Wert Beschreibung
ToolBarID TfrmOptionsToolbar Schaltflächen der Hauptsymbolleiste
TfrmOptionsToolbarMiddle Schaltflächen der mittleren Symbolleiste
(nicht vorhanden) Schaltflächen der Hauptsymbolleiste
ToolItemID Kennung (ID) Eindeutige ID der Schaltfläche

Die eindeutige ID wird im Tag ID gespeichert, und es gibt mehrere Möglichkeiten, sie zu ermitteln: Sie finden sie in der Datei doublecmd.xml, in einer Symbolleisten-Sicherungsdatei, oder indem Sie die Schaltfläche einfach in die Zwischenablage kopieren und ihren Code in einen Texteditor einfügen.

Hinweis: Die IDs werden automatisch generiert und müssen nicht unbedingt mit ähnlichen Schaltflächen in einer anderen Programmkopie übereinstimmen. Bei Bedarf können wir jedoch manuell eigene Werte festlegen.

3.1.1. Beispiel für DC.ExecuteCommand

In diesem Beispiel schreiben wir ein einfaches Skript, das folgende Aktionen ausführt:

  1. Fokus auf das rechte Panel setzen
  2. Alle geöffneten Tabs schließen
  3. In einen bestimmten Ordner wechseln
  4. Fokus auf das linke Panel setzen
  5. Alle geöffneten Tabs schließen
  6. In einen bestimmten Ordner wechseln
  7. Einen neuen Tab öffnen
  8. In einen bestimmten Ordner wechseln
-- 1. Fokus auf das rechte Panel setzen.
DC.ExecuteCommand("cm_FocusSwap", "side=right")

-- 2. Alle Tabs schließen.
DC.ExecuteCommand("cm_CloseAllTabs")

-- 3. In ein bestimmtes Verzeichnis wechseln.
DC.ExecuteCommand("cm_ChangeDir", "E:\\FakeKey\\Documents\\Music")

-- 4. Fokus auf das linke Panel setzen.
DC.ExecuteCommand("cm_FocusSwap", "side=left")

-- 5. Alle Tabs schließen.
DC.ExecuteCommand("cm_CloseAllTabs")

-- 6. In ein bestimmtes Verzeichnis wechseln.
DC.ExecuteCommand("C:\\Users\\Public\\Music")

-- 7. Neuen Tab öffnen.
DC.ExecuteCommand("cm_NewTab")

-- 8. In ein bestimmtes Verzeichnis wechseln.
DC.ExecuteCommand("cm_ChangeDir", "E:\\VirtualMachines\\ShareFolder")

Mit dem internen Befehl cm_ExecuteScript können wir eine Symbolleistenschaltfläche so konfigurieren, dass sie unser Skript ausführt.

Angenommen, diese Skriptdatei befindet sich unter E:\scripts\lua\music.lua, dann können wir die Schaltfläche wie folgt konfigurieren:

Lua-Skript über die Symbolleiste aufrufen

Zudem können wir den internen Editor von Double Commander verwenden, um das Skript zu bearbeiten. Wenn die Datei die Endung .lua hat, erkennt der interne Editor dies und bietet eine Syntaxhervorhebung für die Sprache Lua:

Lua-Syntaxhervorhebung im internen Editor

3.2. Systembibliothek

Diese Bibliothek enthält verschiedene Systemfunktionen.

Sie stellt alle ihre Funktionen in der Tabelle SysUtils bereit.

Systembibliothek
FunktionsnameBeschreibung

SysUtils.Sleep(iMilliseconds)

Pausiert die Ausführung des Skripts für die angegebene Anzahl an Millisekunden iMilliseconds.
Nach Ablauf der angegebenen Zeit wird die Skriptausführung fortgesetzt.

SysUtils.GetTickCount()

Gibt einen inkrementellen CPU-Taktzähler zurück. Dieser kann für Zeitmessungen verwendet werden, es sollte jedoch nicht von festen Intervallen zwischen den Takten ausgegangen werden.

bExists = SysUtils.FileExists(sFileName)

Prüft, ob eine bestimmte Datei im Dateisystem vorhanden ist.

Wenn eine Datei namens sFileName auf der Festplatte existiert, wird in bExists der Wert true zurückgegeben, andernfalls false.

bExists = SysUtils.DirectoryExists(sDirectory)

Prüft, ob das Verzeichnis sDirectory im Dateisystem vorhanden ist und tatsächlich ein Verzeichnis ist.

Falls ja, gibt die Funktion in bExists den Wert true zurück, andernfalls false.

iAttr = SysUtils.FileGetAttr(sFileName)

Gibt die Attributeinstellungen der Datei sFileName in iAttr zurück.

Eine detaillierte Beschreibung der Rückgabewerte finden Sie hier.

Handle, FindData = SysUtils.FindFirst(sPath)

Sucht nach Dateien, die dem Suchmuster sPath entsprechen (normalerweise unter Verwendung von Platzhaltern).

Wenn keine Datei gefunden wird, ist Handle gleich nil.

Wenn mindestens ein Element gefunden wurde, kann das zurückgegebene Handle in nachfolgenden Aufrufen von SysUtils.FindNext verwendet werden, um weitere Übereinstimmungen desselben Musters zu finden.

Die Tabelle FindData enthält Informationen zur gefundenen Datei bzw. zum gefundenen Verzeichnis.

Die Felder der Tabelle FindData sind wie folgt:

  • Name : Dateiname (ohne Pfad).
  • Attr : Dateiattribute (Details siehe hier).
  • Size : Dateigröße (in Bytes).
  • Time : Zeitstempel der Datei (Sekunden seit dem 1. Januar 1970).

Result, FindData = SysUtils.FindNext(Handle)

Sucht die nächste Übereinstimmung einer Suchsequenz, die durch FindFirst initiiert wurde, indem das zuvor zurückgegebene Handle wiederverwendet wird.

Wenn eine Datei oder ein Verzeichnis gefunden wird, ist der zurückgegebene Wert Result nicht leer, andernfalls nil.

Es gelten dieselben Hinweise wie für SysUtils.FindFirst.

Hinweis: Auf den letzten Aufruf von SysUtils.FindNext muss immer ein Aufruf von SysUtils.FindClose mit demselben Handle folgen. Andernfalls kommt es zu Speicherlecks.

SysUtils.FindClose(Handle)

Beendet eine Reihe von SysUtils.FindFirst/SysUtils.FindNext-Aufrufen.

Gibt jeglichen von diesen Aufrufen belegten Speicher frei.

Dieser Aufruf ist absolut notwendig, um Speicherlecks zu vermeiden.

bResult = SysUtils.CreateDirectory(sDirectory)

Erstellt ein Verzeichnis oder eine Reihe von Verzeichnissen. sDirectory ist der vollständige Pfad des Verzeichnisses.

Gibt true zurück, wenn das Verzeichnis sDirectory bereits existiert oder erfolgreich erstellt wurde. Wenn das Erstellen eines Teils fehlschlägt, wird false zurückgegeben.

bResult = SysUtils.CreateHardLink(sFileName, sLinkName)

Erstellt einen Hardlink sLinkName für die Datei sFileName.

Gibt true bei Erfolg zurück, andernfalls false.

bResult = SysUtils.CreateSymbolicLink(sFileName, sLinkName)

Erstellt einen symbolischen Link sLinkName für das Verzeichnis oder die Datei sFileName.

Gibt true bei Erfolg zurück, andernfalls false.

sTarget = SysUtils.ReadSymbolicLink(sLinkName, bRecursive)

Liest das Ziel des symbolischen Links sLinkName aus.

Wenn bRecursive auf true gesetzt ist und der Link auf einen anderen Link verweist, wird das Ziel rekursiv aufgelöst, bis ein gültiger Name gefunden wird, der kein symbolischer Link ist.

Gibt den Pfad zurück, auf den der symbolische Link sLinkName verweist, oder eine leere Zeichenfolge, wenn der Link ungültig ist oder die Zieldatei nicht existiert (wenn bRecursive auf true steht).

sName = SysUtils.ExtractFileName(sFileName)

Extrahiert den Dateinamenteil aus einem vollständigen Pfadnamen.

Der Dateiname besteht aus allen Zeichen nach dem letzten Verzeichnis-Trennzeichen („/“ oder „\“) bzw. nach dem Laufwerksbuchstaben.

sExt = SysUtils.ExtractFileExt(sFileName)

Gibt die Dateiendung des Dateinamens zurück (alle Zeichen nach dem letzten Punkt „.“, einschließlich des Punkts selbst).

sPath = SysUtils.ExtractFilePath(sFileName)

Extrahiert den Pfad (einschließlich des Laufwerksbuchstabens) aus dem Dateinamen.

Der Pfad besteht aus allen Zeichen vor dem letzten Verzeichnis-Trennzeichen („/“ oder „\“), einschließlich des Trennzeichens selbst.

sDir = SysUtils.ExtractFileDir(sFileName)

Extrahiert nur das Verzeichnis aus sFileName, einschließlich des Laufwerksbuchstabens.

Der Verzeichnisname hat im Gegensatz zu SysUtils.ExtractFilePath kein abschließendes Verzeichnis-Trennzeichen.

sDrive = SysUtils.ExtractFileDrive(sFileName)

Extrahiert das Laufwerk aus dem Dateinamen.

Beachten Sie bitte, dass einige Betriebssysteme keine Laufwerksbuchstaben unterstützen.

sName = SysUtils.GetAbsolutePath(sFileName, sBaseDirectory)

Gibt den absoluten (vollständigen) Pfad der Datei zurück:

  • sFileName : Dateiname mit relativem Pfad.
  • sBaseDirectory : Das Verzeichnis, das als Basis für sFileName dient.

Wenn der absolute Pfad nicht ermittelt werden kann, gibt die Funktion den Wert von sFileName zurück.

sName = SysUtils.GetRelativePath(sFileName, sBaseDirectory)

Gibt den Pfad des Dateinamens relativ zum angegebenen Verzeichnis zurück:

  • sFileName : Vollständiger (absoluter) Dateiname.
  • sBaseDirectory : Das Verzeichnis, das als Basis für sFileName dient.

Wenn sFileName and sBaseDirectory denselben Wert enthalten, gibt die Funktion eine leere Zeichenfolge ("") zurück. Wenn der relative Pfad nicht ermittelt werden kann, gibt die Funktion den Wert von sFileName zurück.

bResult = SysUtils.MatchesMask(sFileName, sMask, iMaskOptions)

Gibt true zurück, wenn sFileName mit der übergebenen Maske sMask übereinstimmt.

iMaskOptions (optionaler Parameter, Standardwert ist 0) wird als Summe der folgenden Werte festgelegt:

Wert Beschreibung
1
Groß-/Kleinschreibung beachten
2
Akzente und Ligaturen ignorieren
4
Filter im Windows-Stil: „*.*“ stimmt auch mit Dateien überein, die keine Endung haben usw.
8
Pinyin-Unterstützung aktivieren (verwendet die Datei pinyin.tbl)

bResult = SysUtils.MatchesMaskList(sFileName, sMaskList, sSeparator, iMaskOptions)

Gibt true zurück, wenn sFileName mit mindestens einer der in sMaskList übergebenen Masken (Standardtrennzeichen ist „;“) übereinstimmt.

sSeparator und iMaskOptions (siehe oben) sind optionale Parameter.

sTempFileName = SysUtils.GetTempName()

Gibt einen Namen zurück, der als temporärer Dateiname (im temporären Systemverzeichnis) verwendet werden kann, ähnlich der Funktion os.tmpname. Die Datei wird jedoch in einem Unterverzeichnis erstellt, das beim Schließen von Double Commander automatisch gelöscht wird.
Wenn die Funktion keinen eindeutigen Namen erstellen kann, gibt sie eine leere Zeichenfolge zurück.

SysUtils.PathDelim

Das Zeichen, das vom aktuellen Betriebssystem verwendet wird, um Verzeichnisnamen in einem vollständigen Dateinamen zu trennen.

Unter Unix/Linux-Systemen ist das Verzeichnis-Trennzeichen „/“, unter Windows „\“.

3.2.1. Rückgabewerte von SysUtils.FileGetAttr

FileGetAttr gibt die Attributeinstellungen der Datei sFileName zurück.

Das Attribut ist eine ODER-Kombination der folgenden Konstanten:

In Rückgabewerten von SysUtils.FileGetAttr verwendete Konstanten
WertBedeutung
0x00000001
faReadOnly
Die Datei ist schreibgeschützt.
0x00000002
faHidden
Die Datei ist versteckt.
Unter Unix/Linux bedeutet dies, dass der Dateiname mit einem punkt beginnt.
0x00000004
faSysFile
Die Datei ist eine Systemdatei.
Unter Unix/Linux bedeutet dies, dass es sich um eine Zeichen- oder Blockgerätedatei oder eine Named Pipe (FIFO) handelt.
0x00000008
faVolumeId
Datenträgerbezeichnung (Volume ID).
Gilt nur für Standard-FAT-Dateisysteme (nicht VFAT oder FAT32) unter DOS/Windows.
0x00000010
faDirectory
Das Element ist ein Verzeichnis.
0x00000020
faArchive
Die Datei wurde archiviert.
Unter Unix/Linux nicht möglich.
0x00000400
faSymLink
Das Element ist ein symbolischer Link.
Hinweis: Tritt ein Fehler auf, wird -1 zurückgegeben.

Siehe das Beispiel im nächsten Abschnitt.

3.2.2. Beispiel für SysUtils.FileGetAttr

Das folgende Skript ist ein Beispiel für die Verwendung von SysUtils.FileGetAttr.

Wenn erkannt wird, dass der Parameter ein Verzeichnis ist, wird ein neuer Tab im aktiven Panel geöffnet und in dieses Verzeichnis gewechselt.

local params = {...}
local iAttr

if #params == 1 then -- Haben wir mindestens einen Parameter erhalten?
  iAttr = SysUtils.FileGetAttr(params[1])
  if iAttr > 0 then -- Haben wir ein gültiges Attribut erhalten?
    if math.floor(iAttr / 0x00000010) % 2 ~= 0 then
      -- Ist Bit 4 gesetzt? Es handelt sich also um ein Verzeichnis.
      DC.ExecuteCommand("cm_NewTab")
      DC.ExecuteCommand("cm_ChangeDir", params[1])
    end
  end
end

Im obigen Beispiel ist params[1] der erste an das Skript übergebene Parameter.

Bei Verwendung des internen Befehls cm_ExecuteScript ist dies der erste Parameter, der nach dem Skriptnamen übergeben wird.

Daher können wir in unserem Beispiel eine Symbolleistenschaltfläche wie folgt konfigurieren:

Parameter mit cm_ExecuteScript verwenden

In diesem Beispiel wird der Parameter %"0%p an das Skript übergeben. Dieser steht für den nicht in Anführungszeichen gesetzten Dateinamen des aktuell ausgewählten Elements im aktiven Panel.

3.2.3. Beispiel für FindFirst, FindNext und FindClose

Im folgenden Skriptbeispiel durchsuchen wir den Inhalt eines als ersten Parameter übergebenen Verzeichnisses und speichern das Ergebnis in einer Textdatei, deren Name als zweiter Parameter übergeben wird.

Dies vermittelt ein gutes Verständnis für die Verwendung von FindFirst, FindNext und FindClose.

local params = {...}

if #params == 2 then -- Haben wir zwei Parameter erhalten?
  local Result = nil
  local hOutputFile = nil

  hOutputFile = io.output(params[2])

  local Handle, FindData = SysUtils.FindFirst(params[1] .. "\\*")
  if Handle ~= nil then
    repeat
      io.write(FindData.Name .. "\r")
      io.write(FindData.Size .. "\r")
      io.write("---------------\r")

      Result, FindData = SysUtils.FindNext(Handle)
    until Result == nil

    SysUtils.FindClose(Handle)
    io.close(hOutputFile)
  end
end

Im obigen Beispiel müssen wir zwei Parameter an das Skript übergeben:

  1. params[1] - Das Verzeichnis, dessen Inhalt wir auflisten möchten
  2. params[2] - Der Dateiname der Ausgabedatei zur Speicherung des Ergebnisses

Daher ist es sehr einfach, eine Symbolleistenschaltfläche mit dem internen Befehl cm_ExecuteScript zu konfigurieren und die Parameter zu übergeben, um all dies zu erledigen.

Parameter mit cm_ExecuteScript verwenden

In diesem Beispiel wird der Parameter %"0%Ds als erster Parameter an das Skript übergeben. Dieser steht für das aktuell im aktiven Panel angezeigte Verzeichnis ohne Anführungszeichen.

3.3. Bibliothek Clipbrd (Zwischenablage)

Double Commander kann unseren Lua-Skripten externe Zwischenablagefunktionen zur Verfügung stellen.

Die folgende Tabelle zeigt die relevanten Funktionen:

Zwischenablagebibliothek
FunktionsnameBeschreibung

Clipbrd.Clear()

Löscht den Inhalt der Zwischenablage.

sVar = Clipbrd.GetAsText()

Ruft den aktuellen Textinhalt der Zwischenablage ab und weist ihn sVar zu. Wenn die Zwischenablage keinen Text enthält, gibt die Funktion eine leere Zeichenfolge zurück.

Clipbrd.SetAsText(sVar)

Speichert den Textinhalt von sVar in der Zwischenablage.

Clipbrd.SetAsHtml(sHtml)

Fügt der Zwischenablage HTML-formatierten Text sHtml hinzu (Zwischenablageformat CF_HTML).

Dieser Inhalt kann in Anwendungen eingefügt werden, die dieses Zwischenablageformat unterstützen, wie MS Word, LO Writer usw.

Es ist völlig in Ordnung, Daten sowohl mit Clipbrd.SetAsText als auch mit Clipbrd.SetAsHtml zu speichern. Beim Einfügen verwendet die jeweilige Anwendung das am besten geeignete Format.

Beispielsweise können wir Folgendes haben:

  • Clipbrd.SetAsText("Willkommen bei Double Commander!")
  • Clipbrd.SetAsHtml("Willkommen bei <b>Double Commander</b>!")

Wenn wir in Notepad wechseln und versuchen, etwas einzufügen, wird die Nachricht, die wir mit Clipbrd.SetAsText kopiert haben, als reiner Text eingefügt. Wenn wir jedoch in Microsoft Word wechseln und etwas einfügen, wird die zweite Nachricht eingefügt, bei der Double Commander fett formatiert ist, da Microsoft Word diesen Inhaltstyp erkennt und unterstützt.

3.3.1. Beispiel für die Clipbrd-Bibliothek

Das folgende Beispiel verwendet drei Funktionen zur Zwischenablage: Clear, GetAsText und SetAsText.

Dies ist ein relativ langes Skript, aber es kombiniert einige der zuvor besprochenen Funktionen sehr gut.

Es setzt voraus, dass sich unser aktives Panel derzeit in einem Verzeichnis mit vielen Quelltextdateien befindet.

Es setzt außerdem voraus, dass wir derzeit ein Wort in der Zwischenablage haben und dass das Skript den aktuellen aktiven Ordner als einzigen Parameter erhält.

Das Skript durchsucht die Dateien auf der aktuellen Verzeichnisebene und liest deren Inhalt einzeln, um Textzeilen zu finden, die das Wort aus der Zwischenablage enthalten.

Die Namen der Dateien, die dieses Wort in mindestens einer Zeile enthalten, werden dann in der Zwischenablage abgelegt.

Anschließend verwendet das Skript den internen Befehl cm_LoadSelectionFromClip, um diese Dateien auszuwählen.

Am Ende wird das ursprünglich gesuchte Wort wieder in der Zwischenablage abgelegt.

local params = {...}
local Result = nil
local iAttr
local bFound = false
local sCompleteFilename = ""
local hInputFile = nil
local sLine = ""
local iPosS
local iPosE
local sFileToSelect = ""
local sSearchString = ""

if #params == 1 then -- Haben wir den Parameter erhalten?
  sSearchString = Clipbrd.GetAsText() -- Ruft den zu suchenden Ausdruck ab.
  Clipbrd.Clear() -- Stellt sicher, dass die Zwischenablage leer ist.
  DC.ExecuteCommand("cm_MarkUnmarkAll") -- Stellt sicher, dass nichts ausgewählt ist.

  -- Wir durchsuchen alle Dateien im Verzeichnis nacheinander.
  local Handle, FindData = SysUtils.FindFirst(params[1] .. "\\*")
  if Handle ~= nil then
    repeat
      sCompleteFilename = params[1] .. "\\" .. FindData.Name
      iAttr = SysUtils.FileGetAttr(sCompleteFilename)
      if iAttr > 0 then -- Haben wir ein gültiges Attribut erhalten?
        -- Wir benötigen Dateien, keine Verzeichnisse!
        if math.floor(iAttr / 0x00000010) % 2 == 0 then

          -- Nun lesen wir die Datei Zeile für Zeile, bis zum Ende oder bis wir fündig werden.
          hInputFile = io.open(sCompleteFilename, "r")
          bFound = false

          while bFound == false do
            sLine = hInputFile:read()
            if sLine == nil then break end
            iPosS, iPosE = string.find(sLine, sSearchString)
            if iPosS ~= nil then bFound = true end
          end

          if bFound == true then
            sFileToSelect = sFileToSelect .. FindData.Name .. "\n"
          end

          io.close(hInputFile)
        end
      end
      Result, FindData = SysUtils.FindNext(Handle)
    until Result == nil

    SysUtils.FindClose(Handle)
  end

  -- Wenn wir etwas gefunden haben, wählen wir es aus!
  if sFileToSelect ~= "" then
    Clipbrd.SetAsText(sFileToSelect)
    DC.ExecuteCommand("cm_LoadSelectionFromClip")
  end

  Clipbrd.SetAsText(sSearchString) -- Stellt das gesuchte Wort in der Zwischenablage wieder her.
end

3.4. Bibliothek Dialogs (Dialoge)

Diese Bibliothek ermöglicht es unseren Skripten, mit dem Benutzer zu interagieren, Nachrichten anzuzeigen, Antworten abzufragen usw.

Die folgende Tabelle listet die verfügbaten Funktionen auf:

Dialogbibliothek
FunktionsnameBeschreibung

iButton = Dialogs.MessageBox(sMessage, sTitle, iFlags)

Zeigt ein Meldungsfenster an, das den Benutzer zum Klicken auf eine Schaltfläche auffordert, die dann von der Funktion zurückgegeben wird:

  • sMessage : Der Text im Meldungsfenster.
  • sTitle : Der Titel des Meldungsfensters.
  • iFlags : Bitweiser ODER-Wert von Konstanten zur Festlegung der angezeigten Schaltflächen, des Fensterstils und der Standardschaltfläche. Siehe die Tabellen für angezeigte Schaltflächen, Fensterstile oder Standardschaltflächen.
  • iButton : Rückgabewert, der die vom Benutzer gedrückte Schaltfläche angibt (siehe diese Tabelle).

bResult, sAnswer = Dialogs.InputQuery(sTitle, sMessage, bMask, sDefault)

Zeigt ein Eingabefenster an, in das der Benutzer eine Zeichenfolge eingeben kann:

  • sTitle : Der Titel des Eingabefensters.
  • sMessage : Der Text im Eingabefenster.
  • bMask : Boolescher Wert; wenn true, werden Sternchen angezeigt, um die Zeichen zu verbergen.
  • sDefault : Standardmäßig vorgeschlagener Text, den der Benutzer nach Bedarf ändern kann.
  • bResult : Gibt einen booleschen Wert zurück, der angibt, ob der Benutzer tatsächlich etwas eingegeben und auf OK geklickt hat.
  • sAnswer : Gibt die vom Benutzer eingegebene Zeichenfolge zurück, wenn dieser die Eingabe mit OK bestätigt hat.

sItem, iItem = Dialogs.InputListBox(sTitle, sMessage, aItems, sDefault)

Zeigt einen Dialog an, der es dem Benutzer ermöglicht, aus einer Liste von Elementen auszuwählen:

  • sTitle : Der Titel des Dialogs.
  • sMessage : Der Text im Dialog.
  • aItems : Eine Lua-Tabelle, bei der jedes Element eine Zeichenfolge sein muss.
  • sDefault : Das standardmäßig in der Liste ausgewählte Element.
  • sItem : Gibt das ausgewählte Element als Zeichenfolge zurück, oder nil, wenn der Dialog abgebrochen wurde.
  • iItem : Der Index des ausgewählten Elements (beginnend bei 1, entsprechend den Lua-Tabellenkonventionen).

3.4.1. In Dialogs.MessageBox angezeigte Schaltflächen

Die von der Funktion Dialogs.MessageBox angezeigten Schaltflächen werden durch die bitweise ODER-Kombination der folgenden Konstanten gesteuert:

ButFlags-Konstanten für in Dialogs.MessageBox angezeigte Schaltflächen
KonstantenwertAngezeigte Schaltflächen (von links nach rechts)
0x0000
MB_OK
Schaltfläche OK
0x0001
MB_OKCANCEL
Schaltfläche OK Schaltfläche CANCEL
0x0002
MB_ABORTRETRYIGNORE
Schaltfläche ABORT Schaltfläche RETRY Schaltfläche IGNORE
0x0003
MB_YESNOCANCEL
Schaltfläche YES Schaltfläche NO Schaltfläche CANCEL
0x0004
MB_YESNO
Schaltfläche YES Schaltfläche NO
0x0005
MB_RETRYCANCEL
Schaltfläche RETRY Schaltfläche CANCEL

3.4.2. Fensterstile von Dialogs.MessageBox

Die von der Funktion Dialogs.MessageBox angezeigten Fensterstile werden durch die bitweise ODER-Kombination der folgenden Konstanten gesteuert:

ButFlags-Konstanten für Symbole und Stile in Dialogs.MessageBox
KonstantenwertFensterstil
0x0040
MB_ICONINFORMATION
Symbol INFORMATION Informationsfenster
0x0030
MB_ICONWARNING
Symbol WARNING Warnfenster
0x0020
MB_ICONQUESTION
Symbol QUESTION Bestätigungsfenster
0x0010
MB_ICONERROR
Symbol ERROR Fehlerfenster

3.4.3. Standardschaltfläche von Dialogs.MessageBox

Die standardmäßig aktive Schaltfläche in Dialogs.MessageBox wird durch die bitweise ODER-Kombination der folgenden Konstanten gesteuert:

ButFlags-Konstanten für Standardschaltflächen in Dialogs.MessageBox
KonstantenwertStandardschaltfläche
0x0000
MB_DEFBUTTON1
Standardmäßig die erste Schaltfläche von links
0x0100
MB_DEFBUTTON2
Standardmäßig die zweite Schaltfläche von links
0x0200
MB_DEFBUTTON3
Standardmäßig die dritte Schaltfläche von links

3.4.4. Rückgabewerte von Dialogs.MessageBox

Die von der Funktion Dialogs.MessageBox zurückgegebene Zahl stellt die vom Benutzer gedrückte Schaltfläche dar:

Rückgabewerte (ButPressed) bei Tastendruck in Dialogs.MessageBox
KonstantenwertGedrückte Schaltfläche
0x0000
mrNone
Keine Schaltfläche gedrückt
0x0001
mrOK
Ergebnis OK
0x0002
mrCancel
Ergebnis CANCEL
0x0003
mrAbort
Ergebnis ABORT
0x0004
mrRetry
Ergebnis RETRY
0x0005
mrIgnore
Ergebnis IGNORE
0x0006
mrYes
Ergebnis YES
0x0007
mrNo
Ergebnis NO

Hinweis: Wenn das Fenster über das „x“ oben rechts oder durch Drücken von Esc geschlossen wird, wird der Wert der Schaltfläche „Abbrechen“ (Cancel) zurückgegeben.

3.4.5. Beispiel für Dialogs.MessageBox

Hier ist ein kleines Skript zur Verwendung von Dialogs.MessageBox und das resultierende Fenster, das angezeigt wird:

-- Schaltflächen, die angezeigt werden
MB_OK = 0x0000
MB_OKCANCEL = 0x0001
MB_ABORTRETRYIGNORE = 0x0002
MB_YESNOCANCEL = 0x0003
MB_YESNO = 0x0004
MB_RETRYCANCEL = 0x0005

-- Fensterstile
MB_ICONINFORMATION = 0x0040
MB_ICONWARNING = 0x0030
MB_ICONQUESTION = 0x0020
MB_ICONERROR = 0x0010

-- Standardschaltflächen
MB_DEFBUTTON1 = 0x0000
MB_DEFBUTTON2 = 0x0100
MB_DEFBUTTON3 = 0x0200

-- Rückgabewerte der gedrückten Schaltfläche
mrNone = 0x0000
mrOK = 0x0001
mrCancel = 0x0002
mrAbort = 0x0003
mrRetry = 0x0004
mrIgnore = 0x0005
mrYes = 0x0006
mrNo = 0x0007

iFlags = MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2
iButton = Dialogs.MessageBox("Möchten Sie beenden?", "Frage", iFlags)

if iButton == mrYes then
  DC.ExecuteCommand("cm_Exit")
end

Beispiel für Dialogs.MessageBox

3.4.6. Beispiel für Dialogs.InputQuery

Hier ist ein kleines Skript zur Verwendung von Dialogs.InputQuery und das resultierende Fenster, das angezeigt wird:

bResult, sAnswer = Dialogs.InputQuery("Authentifizierung", "Bitte geben Sie Ihren Namen ein:", false, "John")

if bResult == true then
  Dialogs.MessageBox("Hallo " .. sAnswer .. "!", "Willkommen!", 0x0040)
end

Beispiel für Dialogs.InputQuery

3.5. Bibliothek LazUtf8 (UTF-8)

Diese Bibliothek bietet grundlegende Unterstützung für die UTF-8-Kodierung.

Sie stellt alle ihre Funktionen in der Tabelle LazUtf8 bereit.

UTF-8-Bibliothek
FunktionsnameBeschreibung

iResult = LazUtf8.Pos(SearchText, SourceText, Offset)

Sucht nach einer Teilzeichenfolge in einer Zeichenfolge ab einer bestimmten Position. Die Suche berücksichtigt die Groß-/Kleinschreibung.

Gibt die Position des ersten Vorkommens der Teilzeichenfolge SearchText in der Zeichenfolge SourceText zurück, beginnend ab der Position Offset (Standardwert ist 1).

Gibt Null zurück, wenn SearchText nach dem angegebenen Offset nicht in SourceText vorkommt.

LazUtf8.Next(String)

Eine Iteratorfunktion, die bei jedem Aufruf das nächste Zeichen in String sowie die Byte-Startposition dieses Zeichens zurückgibt.

Beispiel:

-- Gibt die Wertepaare im Format „Position : Zeichen“ aus
for iPos, sChar in LazUtf8.Next(String) do
  DC.LogWrite(iPos .. " : " .. sChar)
end

sResult = LazUtf8.Copy(String, iIndex, iCount)

Kopiert einen Teil einer Zeichenfolge.

Gibt eine Zeichenfolge zurück, die eine Kopie von iCount Zeichen ab der Position iIndex aus String darstellt.

Wenn iCount größer als die Länge der Zeichenfolge String ist, wird das Ergebnis abgeschnitten. Wenn iIndex größer als die Länge der Zeichenfolge String ist, wird eine leere Zeichenfolge zurückgegeben.

iResult = LazUtf8.Length(String)

Gibt die Anzahl der UTF-8-Zeichen in einer Zeichenfolge zurück.

sResult = LazUtf8.UpperCase(String)

Akzeptiert eine Zeichenfolge und gibt eine Kopie dieser Zeichenfolge zurück, in der alle Kleinbuchstaben in Großbuchstaben umgewandelt wurden.

sResult = LazUtf8.LowerCase(String)

Akzeptiert eine Zeichenfolge und gibt eine Kopie dieser Zeichenfolge zurück, in der alle Großbuchstaben in Kleinbuchstaben umgewandelt wurden.

sResult = LazUtf8.ConvertEncoding(String, FromEnc, ToEnc)

Konvertiert die Kodierung von String von FromEnc in ToEnc.

Liste der unterstützten Kodierungswerte:

  • Standard-Systemkodierung (abhängig von den Ländereinstellungen des Systems): "default".
  • Standard-ANSI-Kodierung (Windows, abhängig von den Ländereinstellungen des Systems): "ansi".
  • Standard-OEM-Kodierung (DOS, abhängig von den Ländereinstellungen des Systems): "oem".
  • Unicode: "utf8", "utf8bom", "ucs2le", "ucs2be".
  • ANSI (Windows): "cp1250", "cp1251", "cp1252", "cp1253", "cp1254", "cp1255", "cp1256", "cp1257", "cp1258".
  • OEM (DOS): "cp437", "cp850", "cp852", "cp865", "cp866", "cp874", "cp932", "cp936", "cp949", "cp950".
  • ISO 8859: "iso88591", "iso88592", "iso88593", "iso88594", "iso88595", "iso88597", "iso88599", "iso885910", "iso885913", "iso885914", "iso885915", "iso885916".
  • Sonstige: "macintosh", "koi8r", "koi8u", "koi8ru".
Bedeutung spezieller Kodierungen (Beispiel).

Unter Windows (Englisch oder Russisch):
  • "default" - cp1252 oder cp1251
  • "ansi" - cp1252 oder cp1251
  • "oem" - cp850 oder cp866
Unter Linux (Englisch oder Russisch):
  • "default" - utf8
  • "ansi" - cp1252 oder cp1251
  • "oem" - cp850 oder cp866

sEnc = LazUtf8.DetectEncoding(String)

Gibt die erkannte Kodierung des übergebenen Textes zurück.
Die Liste der unterstützten Kodierungen entspricht der der Funktion LazUtf8.ConvertEncoding.

3.6. Bibliothek Char (Zeichen)

Diese Bibliothek enthält Funktionen zur Überprüfung, ob Zeichen zu bestimmten Unicode-Kategorien gehören, sowie zum Abrufen von Zeichenkategorien.

Liste der in dieser Bibliothek verfügbaren Funktionen:

Zeichenbibliothek
FunktionsnameBeschreibung

iResult = Char.GetUnicodeCategory(Character)

Gibt die Unicode-Kategorie des Zeichens Character als einen der folgenden Werte zurück:

WertBeschreibung
  Buchstaben:
0Großbuchstabe (Lu)
1Kleinbuchstabe (Ll)
2Titelbuchstabe (Lt)
3Modifizierender Buchstabe (Lm)
4Anderer Buchstabe (Lo)
  Markierungen:
5Markierung ohne Breitenbeanspruchung (Mn)
6Kombinierende Markierung mit Breitenbeanspruchung (Mc)
7Umschließende Markierung (Me)
  Zahlen:
8Dezimalzahl (Nd)
9Buchstabenzahl (Nl)
10Andere Zahl (No)
  Satzzeichen:
11Verbindendes Satzzeichen (Pc)
12Gedankenstrich (Pd)
13Öffnendes Satzzeichen (Ps)
14Schließendes Satzzeichen (Pe)
15Anfangsanführungszeichen (Pi)
16Endanführungszeichen (Pf)
17Anderes Satzzeichen (Po)
  Symbole:
18Mathematisches Symbol (Sm)
19Währungssymbol (Sc)
20Modifikatorsymbol (Sk)
21Anderes Symbol (So)
  Trennzeichen:
22Leerzeichen (Zs)
23Zeilentrennzeichen (Zl)
24Absatztrennzeichen (Zp)
  Sonstige:
25Steuerzeichen (Cc)
26Formatierzeichen (Cf)
27Surrogat (Cs)
28Private Verwendung (Co)
29Nicht zugewiesen (Cn)

bResult = Char.IsDigit(Character)

Gibt true zurück, wenn das Zeichen Character zur Kategorie Nd gehört.

bResult = Char.IsLetter(Character)

Gibt true zurück, wenn das Zeichen Character zu einer der Kategorien Lu, Ll, Lt, Lm oder Lo gehört.

bResult = Char.IsLetterOrDigit(Character)

Gibt true zurück, wenn das Zeichen Character zu einer der Kategorien Lu, Ll, Lt, Lm, Lo, Nd oder Nl gehört.

bResult = Char.IsLower(Character)

Gibt true zurück, wenn das Zeichen Character zur Kategorie Ll gehört.

bResult = Char.IsUpper(Character)

Gibt true zurück, wenn das Zeichen Character zur Kategorie Lu gehört.

Darüber hinaus unterstützen diese Funktionen die Übergabe von zwei Parametern: Anstelle eines einzelnen Zeichens können wir eine Zeichenfolge und die Position des Zeichens in dieser Zeichenfolge angeben.

3.7. Bibliothek os (Betriebssystem)

Diese Bibliothek enthält Funktionen, die sich auf das Betriebssystem beziehen, unter dem Double Commander ausgeführt wird.

Liste der in dieser Bibliothek verfügbaren Funktionen:

Betriebssystembibliothek
FunktionsnameBeschreibung

iResultCode = os.execute(sCommand)

Führt sCommand aus, als ob es in der Befehlszeile eingegeben worden wäre, und gibt den Ergebnismeldungscode der Operation zurück.

sCommand kann Folgendes sein:

  • Ein Konsolenbefehl, z. B. os.execute("dir > all.txt")
  • Eine ausführbare Datei, z. B. os.execute("C:\\Windows\\System32\\calc.exe")
  • Eine ausführbare Datei mit Parametern:
    os.execute("C:\\Utils\\fsum.exe -md5 test.bin > md5.txt")

sTempFileName = os.tmpname()

Gibt einen Namen zurück, der als temporärer Dateiname (im temporären Systemverzeichnis) verwendet werden kann.
Wenn die Funktion keinen eindeutigen Namen erstellen kann, gibt sie eine leere Zeichenfolge zurück.

bResult, sError, iError = os.remove(sFileName)

Löscht die Datei oder das Verzeichnis namens sFileName.

Gibt bei Erfolg true zurück.

Bei einem Fehler gibt die Funktion drei Werte zurück:

  1. nil für Fehler
  2. sError als Fehlerbeschreibung
  3. iError als Fehlercode

bResult, sError, iError = os.rename(sOldName, sNewName)

Benennt die Datei sOldName in sNewName um.

HINWEIS: Wenn eine Datei namens sNewName bereits existiert, wird sie überschrieben!

Gibt bei Erfolg true zurück.

Bei einem Fehler gibt die Funktion drei Werte zurück:

  1. nil für Fehler
  2. sError als Fehlerbeschreibung
  3. iError als Fehlercode

Value = os.getenv(VariableName)

Gibt den Wert Value der als Parameter übergebenen Umgebungsvariable VariableName zurück.
Wenn keine Variable mit diesem Namen existiert, wird nil zurückgegeben.

os.setenv(VariableName, Value)

Fügt die Umgebungsvariable VariableName hinzu oder ändert sie. Tritt ein Fehler auf, gibt die Funktion -1 zurück.

os.unsetenv(VariableName)

Entfernt die Umgebungsvariable VariableName. Tritt ein Fehler auf, gibt die Funktion -1 zurück.

4. Index

Bibliothek DC

DC.CurrentPanel
DC.ExecuteCommand
DC.LogWrite


Systembibliothek

SysUtils.CreateDirectory
SysUtils.CreateHardLink
SysUtils.CreateSymbolicLink
SysUtils.DirectoryExists
SysUtils.ExtractFileDir
SysUtils.ExtractFileDrive
SysUtils.ExtractFileExt
SysUtils.ExtractFileName
SysUtils.ExtractFilePath
SysUtils.FileExists
SysUtils.FileGetAttr
SysUtils.FindClose
SysUtils.FindFirst
SysUtils.FindNext
SysUtils.GetAbsolutePath
SysUtils.GetRelativePath
SysUtils.GetTempName
SysUtils.GetTickCount
SysUtils.MatchesMask
SysUtils.MatchesMaskList
SysUtils.PathDelim
SysUtils.ReadSymbolicLink
SysUtils.Sleep


Zwischenablagebibliothek

Clipbrd.Clear
Clipbrd.GetAsText
Clipbrd.SetAsHtml
Clipbrd.SetAsText


Dialogbibliothek

Dialogs.InputListBox
Dialogs.InputQuery
Dialogs.MessageBox


UTF-8-Bibliothek

LazUtf8.ConvertEncoding
LazUtf8.Copy
LazUtf8.DetectEncoding
LazUtf8.Length
LazUtf8.LowerCase
LazUtf8.Next
LazUtf8.Pos
LazUtf8.UpperCase


Zeichenbibliothek

Char.GetUnicodeCategory
Char.IsDigit
Char.IsLetter
Char.IsLetterOrDigit
Char.IsLower
Char.IsUpper


Betriebssystembibliothek

os.execute
os.getenv
os.remove
os.rename
os.setenv
os.tmpname
os.unsetenv


Gültiges HTML 4.0 Transitional CSS gültig!