INI Modul. (*ini Dateien parsen und schreiben)

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

ComNik

Betreff: INI Modul. (*ini Dateien parsen und schreiben)

BeitragDi, Jul 07, 2009 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Very Happy
wiieeeeder mal ein neues INI Modul/ein neuer INI Parser etc...

Aber warum sollte ich ihn euch vorenthalten? Wenn ihn jemand haben will... Rolling Eyes

1.Beschreibung:
Dieses Ini Modul enthält Funktionen um INI Dateien auszulesen sowie jene zu schreiben.
Dokumentation ist enthalten. Man kann: INI Dateien öffnen, Felder hinzufügen, Keys hinzufügen,
Key-Value ändern, Key-Value auslesen. Nach der benutzung von AddField(), AddKey() oder SetKeyValue()
(und nur DANACH) sollte (MUSS) die Funktion SaveIni() aufgerufen werden, sonst bleibt die datei unverändert!

2.Funktionsweise( Rolling Eyes ):
Die ini Datei wird mit OpenIni() geöffnet und dann komplett in ein (dynamisches)Array gelesen.
Auf der Suche nach dem richtigen Field (z.B: [Beispiel]) wird das array durchsucht, die zeile wird nur
ausgelesen wenn das erste Zeichen = "[" ist. Davor werden natürlich alle leerzeichen gelöscht.
Erst dann werden alle zeilen bis zum nächsten "[" ausgelesen. Etc... Rolling Eyes

Das ganze läuft wie ich finde ziemlich schnell. Dieser Test wird auf meinem rechner durchschnittlich in 13 Millisekunden ausgeführt.


Code: [AUSKLAPPEN]

Import comnik.inimod

 SuperStrict

 Local start:Int = MilliSecs()

 Local test:TIni = OpenIni("test.ini")

 Type TGegner
   Field x:Float
   Field y:Float
   Field id:Int
 End Type

 Local i:Int
 Local gegner_list:TList = CreateList()
 Local gegner:TGegner

 For i=0 To 100
   gegner = New TGegner
   gegner.x = Rand(0,800)
   gegner.y = Rand(0,600)
   gegner.id = i
  ListAddLast(gegner_list,gegner)
 Next

 For gegner = EachIn gegner_list
   AddField(test,gegner.id)
   AddKey(test,gegner.id,"x",gegner.x)
   AddKey(test,gegner.id,"y",gegner.y)
 Next

 For gegner = EachIn gegner_list
   If Rand(0,5) = 3 Then SetKeyValue(test,gegner.id,"x","geändert!")
   If Rand(0,5) = 2 Then Print(GetValue(test,gegner.id,"x"))
 Next

 SaveIni(test)
 Print((MilliSecs()-start))


Ich find das ganz gut, teilt mir wenn ihr wollt eure zeiten mit.

DOWNLOAD: https://www.blitzforum.de/upload/file.php?id=6133

Anmerkung: NEUE VERSION!
Change Log:
- GetInt() liefert keinen String sondern eine int zurück Rolling Eyes
- GetFloat() Rolling Eyes


Danke für eure Aufmerksamkeit.
WIP: Vorx.Engine

BladeRunner

Moderator

BeitragMi, Jul 08, 2009 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

ComNik

BeitragMi, Jul 08, 2009 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Schön! Very Happy
mann erstes modul und direkt ins falsche forum -.-
WIP: Vorx.Engine

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group