Simples INI Modul

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Thunder

Betreff: Simples INI Modul

BeitragMo, Mai 24, 2010 0:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich weiß, INI Module findet man hier zu Hauf und ich habe auch Quantitativ wenig zu bieten, doch ich finde, dass mein System das simpelste ist und für kleinere (wahrscheinlich auch für mittelgroße) Programme nützlich sein kann. Daher hoffe ich, dass die Lebenszeit dieses Eintrags nicht allzu kurz sein wird.

Ich habe mir folgendes überlegt: Ein Programm muss normalerweise nur eine INI-Datei verwalten, in der alle Einstellungen gespeichert sind - also wozu einen Handle zurückgeben?
Es kann immer nur eine INI im Speicher sein. Diese kann aus einer Datei geladen oder im Programm erstellt werden. Dann kann man diese durch spezielle Funktionen modifizieren und wieder abspeichern.
Das Modul verwendet die Module brl.linkedlist und brl.filesystem.

Ich habe das Modul recht ausführlich dokumentiert (Zweisprachig - soweit ich das konnte; daher bin ich jedem dankbar, der in meinem Englisch einen Fehler findet und mir diesen meldet).

Es werden Kommentare mit ; erkannt.
Es können Sektoren nicht verschachtelt werden (ob das bei der normierten INI möglich ist, weiß ich nicht)

Ich habe hier ein Testprogramm geschrieben, das alle Funktionen der Lib verwendet:
BlitzMax: [AUSKLAPPEN]
SuperStrict
Framework brl.blitz
Import brl.standardio
Import thunder.ini

Const TESTINI$="test.ini"

If FileType(TESTINI)<>1 Then
CreateTestINI(TESTINI)
Print "ini created. Please restart..."
Else
Print "Reading..."
ReadTestINI(TESTINI)
EndIf
End

Function CreateTestINI(name$)
AddINISection "Graphics" 'Sektor hinzufügen
AddINIEntry "width","800" 'Eintrag in den letzen Sektor (in dem Fall "Graphics) erstellen
AddINIEntry "height","600"
AddINIEntry "fullscreen","no"
AddINISection "nix"
AddINISection "highscore"
AddINIEntry "isused","yes"
AddINISection "ThisINI"
AddINIEntry "isfinished","no"
SaveINI name 'INI in der Datei name speichern
ClearINI 'Die Daten, die noch im RAM sind, löschen
EndFunction

Function FinishTestINI()
RenameINISection "highscore","HIGHSCORE"

ModifyINIEntry "entries","10","highscore"
ModifyINIEntry "width","1280","Graphics"
ModifyINIEntry "height","800","gRAPHICS"
ModifyINIEntry "isfinished","yes","tHISini"

WriteINIEntry "frequenzy","75","Graphics"
WriteINIEntry "entries","15","highscore"

DeleteINISection "nix"

EndFunction

Function ReadTestINI(name$)
LoadINI name
Print "Width: "+ReadINIEntry("width","graphics")
Print "Height: "+ReadINIEntry("heIGht","GraPHIcs")
Print "Frequenzy: "+ReadINIEntry("FREqUenzy","Graphics")
Print "Fullscreen: "+ReadINIEntry("fullscreen","graphics") + "; Bool: "+GetBool(ReadINIEntry("fullscreen","graphics"))
Print "--"
Print "Highscore:"
Print "Isused: "+ReadINIEntry("isused","highscore")+"; Bool: " + GetBool(ReadINIEntry("isused","highscore"))
Print "Entries: "+ReadINIEntry("entries","HIGHSCORE")
If getbool(ReadINIEntry("isfinished","ThisINI"))=0 Then
' kein Vergleich mit 'no', da auch 'No' und 'nO' und 'NO' zulässig ist
Print "This INI isn't finished yet."
FinishTestINI()
SaveINI name
Print "Now it's finished. Please restart once more..."
Else
Print "This ini is finished."
EndIf
ClearINI 'Wenn ich hier noch eine weitere INI laden würde, müsste ich
'ClearINI nicht schreiben, da LoadINI am Anfang ClearINI aufruft
EndFunction


Ich habe mir die Freiheit genommen das Modul unter der GNU Lesser General Public License zu lizenzieren.
ACHTUNG Ich habe mir jetzt (07.Aug.2016) die Freiheit genommen, die Library neu zu lizenzieren unter MIT-Lizenz.
Ich habe schon vor einiger Zeit versucht meine GPL-Projekte neu zu lizenzieren (unter Lizenzen ohne Copyleft), aber dieses scheint untergegangen zu sein.

Ich habe das Modul als einfache Ordnerstruktur mit der Lizenz in einem Zip-Archiv hochgeladen. Download: https://www.blitzforum.de/upload/file.php?id=13158 (neuer Download! MIT Lizenz!)

mfg Thunder


Edit: Ich bemerke gerade, dass DeleteINIEntry nicht im Beispielprogramm vorkommt. Sollte aber nicht so schlimm sein.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group