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
- Code: Alles auswählen
Wert = initabelle.Sektion.Schlüssel
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 sofort 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
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 sofort 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.014 Sekunden, mit GeSHi 1.0.8.9
Die Bibliothek iniLib.lua und ein Beispiel ini_test.lua sind im Anhang.
Gruß rudi