[Lua] INI-Dateien für Skripteinstellungen

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

INI-Dateien für Skripteinstellungen

Beitragvon rudi » 09.07.2013, 12:36

Hallo,

um Einstellungen von LUA-Skripten speichern zu können stelle ich hier die Bibliothek iniLib.lua vor. Mit deren Hilfe können die LUA-Typen boolean, number und string in INI-Datei gespeichert und gelesen werden. INI-Dateien bestehen aus Sektionen in denen sich Wertepaare, bestehend aus Schlüssel und Wert, befinden. In LUA wird diese Struktur in einer Tabelle abgebildet, die jede Sektion wiederum in einer Tabelle darstellt. Damit können Werte in LUA einfach geschrieben
Code: Alles auswählen
initabelle.Sektion.Schlüssel = Wert
und gelesen
Code: Alles auswählen
Wert = initabelle.Sektion.Schlüssel
werden.

Die Bibliothek selbst besitzt nur die Funktionen read() und write(). Mit initabelle, neu = read("Dateiname") wird unter Angabe des Dateinamens die initabelle erzeugt und zurückgegeben. Existiert die INI-Datei nicht, dann wird das im zweiten Rückgabewert angezeigt. Ist dieser true, kann das zum Setzen von Vorgabewerten benutzt werden. Die Funktion gespeichert = write(initabelle) benötigt zum Speichern nur die initabelle, da der Dateiname dort hinterlegt ist. Das vermeidet Fehler beim Speichern und es können auch mehrere INI-Dateien zeitgleich verwendet werden. Der Rückgabewert zeigt mit true das erfolgreiche Speichern der INI-Datei an.
Als Speicherort ist A/CHDK/DATA/ vorgesehen. In diesem Fall reicht die Angabe des Dateinamens ohne Endung. Ein anderer Speicherort unterhalb von A/CHDK/ ist bei Angabe des vollständigen Pfades und Dateinamen mit Endung möglich. In diesem Fall ist für die Existenz des Zielordners selbst Sorge zu tragen.

so funktioniert's:
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
-- Bibliothek iniLib einbinden
local iniLib = require("iniLib")

-- lesen aus ini-Datei "A/CHDK/DATA/initest.ini"
ini, new = iniLib.read("initest")

if new then
    -- bei neuer ini-Datei die benötigten Abschnitte und Schlüssel erzeugen
    ini.main = {
        top = 10,
        left = 2,
    }
    -- evtl. Voreinstellungen gleich speichern
    -- iniLib.write(ini)
end

--[[
    HAUPTPROGRAMM
    wie
        print("top", ini.main.top)
    oder
        print("left", ini["main"]["left"])
]]


-- ini mit Erfolgstest abschließend speichern
if iniLib.write(ini) then
    print("ini gepeichert")
else
    print("!!! Fehler beim Speichern")
end
Erstellt in 0.003 Sekunden, mit GeSHi 1.0.8.9


Die Bibliothek iniLib.lua und ein Beispiel ini_test.lua sind im Anhang.

Gruß rudi
Dateianhänge
ini_test.lua
Beispiel für iniLib, Version: 0.1
(1.9 KiB) 87-mal heruntergeladen
iniLib.lua
Bibliothek iniLib, Version: 0.1
(4.14 KiB) 86-mal heruntergeladen
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 500
Registriert: 11.09.2009, 12:27
Kamera(s): A590IS_101B, SX260_100B

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste

cron