xaymar.config

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Xaymar

ehemals "Cgamer"

Betreff: xaymar.config

BeitragDo, Apr 28, 2011 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieder mal ein Modul von mir, es erlaubt das einfache laden von Konfigurationen aus DataPaks.

~Das Modul~
BlitzMax: [AUSKLAPPEN]
SuperStrict

Import xaymar.datapak

Module xaymar.config
ModuleInfo "License: Public Domain"
ModuleInfo "Original Author: Michael Dirks <support@levelnull.de>"
ModuleInfo "Purpose: Easily read and write configuration files by using xaymar.datapak."

Type TConfig
Field __MainDP:TDataPak
Field __CurrentDP:TDataPak

Method CreateConfig(name:String="Master")
__CurrentDP = Null
If __MainDP <> Null
__MainDP.Destroy()
__MainDP = Null
End If
__MainDP = TDataPak.Create(name)
End Method
Method OpenConfig(url:String,pwd:String="")
__CurrentDP = Null
If __MainDP <> Null
__MainDP.Destroy()
__MainDP = Null
End If
__MainDP = TDataPak.FromFile(url,pwd)
End Method
Method SaveConfig(url:String,pwd:String="")
__MainDP.ToFile(url, TDP_FLAG_COMPRESSED | TDP_FLAG_PASSWORDED, pwd)
End Method
Method CloseConfig()
__CurrentDP = Null
__MainDP.Destroy()
__MainDP = Null
End Method
Method IsConfigOpen:Int()
Return (__MainDP <> Null)
End Method

Method CreateGroup(name:String)
If __MainDP <> Null
Local TVarDP:TDataPakType[] = Null
If __MainDP.GetDataByName(name) <> Null Then
TVarDP = __MainDP.GetDataByName(name)
End If
If TVarDP <> Null And TVarDP[0].GetType() = TDP_CONTAINER
__CurrentDP = TDataPak(TVarDP[0])
Else
__CurrentDP = __MainDP.AddDataContainer(name)
End If
Else
Throw TConfigException.Create("No Config open.")
End If
End Method
Method OpenGroup(name:String)
If __MainDP <> Null
Local TVarDP:TDataPakType[] = Null
If __MainDP.GetDataByName(name) <> Null Then
TVarDP = __MainDP.GetDataByName(name)
End If
If TVarDP <> Null And TVarDP[0].GetType() = TDP_CONTAINER
__CurrentDP = TDataPak(TVarDP[0])
Else
Throw TConfigException.Create("Group '"+name+"' does not exist.")
End If
Else
Throw TConfigException.Create("No Config open.")
End If
End Method
Method CloseGroup()
__CurrentDP = Null
End Method
Method IsGroupOpen:Int()
Return (__CurrentDP <> Null)
End Method

Method GetGroupByte:Byte(name:String)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_BYTE
Return TDataPakByte(TVarDP).GetData()
Else
Throw TConfigException.Create("Byte '"+name+"' does not exist.")
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupShort:Short(name:String)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_SHORT
Return TDataPakShort(TVarDP).GetData()
Else
Throw TConfigException.Create("Short '"+name+"' does not exist.")
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupInt:Int(name:String)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_INT
Return TDataPakInt(TVarDP).GetData()
Else
Throw TConfigException.Create("Int '"+name+"' does not exist.")
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupLong:Long(name:String)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_LONG
Return TDataPakLong(TVarDP).GetData()
Else
Throw TConfigException.Create("Long '"+name+"' does not exist.")
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupFloat:Float(name:String)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_FLOAT
Return TDataPakFloat(TVarDP).GetData()
Else
Throw TConfigException.Create("Float '"+name+"' does not exist.")
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupDouble:Double(name:String)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_DOUBLE
Return TDataPakDouble(TVarDP).GetData()
Else
Throw TConfigException.Create("Double '"+name+"' does not exist.")
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupString:String(name:String)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_STRING
Return TDataPakString(TVarDP).GetData()
Else
Throw TConfigException.Create("String '"+name+"' does not exist.")
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method

Method GetGroupByteEx:Byte(name:String, def:Byte)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_BYTE
Return TDataPakByte(TVarDP).GetData()
Else
Return def
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupShortEx:Short(name:String, def:Short)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_SHORT
Return TDataPakShort(TVarDP).GetData()
Else
Return def
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupIntEx:Int(name:String, def:Int)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_INT
Return TDataPakInt(TVarDP).GetData()
Else
Return def
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupLongEx:Long(name:String, def:Long)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_LONG
Return TDataPakLong(TVarDP).GetData()
Else
Return def
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupFloatEx:Float(name:String, def:Float)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_FLOAT
Return TDataPakFloat(TVarDP).GetData()
Else
Return def
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupDoubleEx:Double(name:String, def:Double)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_DOUBLE
Return TDataPakDouble(TVarDP).GetData()
Else
Return def
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method GetGroupStringEx:String(name:String, def:String)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_STRING
Return TDataPakString(TVarDP).GetData()
Else
Return def
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method

Method SetGroupByte(name:String,data:Byte)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_BYTE
TDataPakByte(TVarDP).SetData(data)
Else
__CurrentDP.AddDataByte(name,data)
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method SetGroupShort(name:String,data:Short)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_SHORT
TDataPakShort(TVarDP).SetData(data)
Else
__CurrentDP.AddDataShort(name,data)
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method SetGroupInt(name:String,data:Int)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_INT
TDataPakInt(TVarDP).SetData(data)
Else
__CurrentDP.AddDataInt(name,data)
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method SetGroupLong(name:String,data:Long)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_LONG
TDataPakLong(TVarDP).SetData(data)
Else
__CurrentDP.AddDataLong(name,data)
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method SetGroupFloat(name:String,data:Float)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_FLOAT
TDataPakFloat(TVarDP).SetData(data)
Else
__CurrentDP.AddDataFloat(name,data)
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method SetGroupDouble(name:String,data:Double)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_DOUBLE
TDataPakDouble(TVarDP).SetData(data)
Else
__CurrentDP.AddDataDouble(name,data)
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
Method SetGroupString(name:String,data:String)
If __CurrentDP <> Null
Local TVarDP:TDataPakType = Null, TVarDPA:TDataPakType[] = __CurrentDP.GetDataByName(name)
If TVarDPA.Length > 0 Then TVarDP = TVarDPA[0]
If TVarDP <> Null And TVarDP.GetType() = TDP_STRING
TDataPakString(TVarDP).SetData(data)
Else
__CurrentDP.AddDataString(name,data)
End If
Else
Throw TConfigException.Create("No Group selected.")
End If
End Method
End Type

Type TConfigException
Field Error:String
Method ToString:String()
Return Error
End Method
Function Create:TConfigException(Error:String)
Local TCE:TConfigException = New TConfigException
TCE.Error = Error
Return TCE
End Function
End Type


~Benutzung~
  • Zuerst müsst ihr eine Instanz der TConfig erstellen, z.b. so: Local CFG:TConfig = New TConfig
  • Nun könnt ihr mit CreateConfig oder OpenConfig eine Konfigurationsdatei erstellen oder öffnen(Format DataPak), z.b. so: CFG.CreateConfig("Tutorial")
  • Da ihr aber nicht wisst ob es tatsächlich geklappt hat könnt ihr mit IsConfigOpen() prüfen ob __MainDP vorhanden ist.
  • Nun könnt ihr einzelne Gruppen für Konfigurationen öffnen, die Befehle dazu sind CreateGroup und OpenGroup, z.b. so: CFG.CreateGroup("Keyboard.Device1")
  • Ob das vorige fehlgeschlagen ist könnt ihr nun auch mit IsGroupOpen prüfen.
  • Habt ihr nun eine Gruppe/Group offen könnt ihr mit den befehlen GetGroupByte/Short/Int/Long/Float/Double/String und deren -Ex modifikation Daten auslesen und mit SetGroupByte/Short/Int/Long/Float/Double/String Daten setzen.
  • Um eine Konfiguration nun zu speichern ruft ihr SaveConfig auf, z.b. so: CFG.SaveConfig("Tutorial.mdp","Whatapassword").


~Methodenliste~
  • CreateConfig(String Name)
  • OpenConfig(String URL, String Passwort)
  • SaveConfig(String URL, String Passwort)
  • CloseConfig()
  • Int Offen = IsConfigOpen()
  • CreateGroup(String Name)
  • OpenGroup(String Name)
  • CloseGroup()
  • Int Offen = IsGroupOpen()
  • Byte Data = GetGroupByte(String Name)
  • Byte Data = GetGroupByteEx(String Name, Byte StandardData)
  • Short Data = GetGroupShort(String Name)
  • Short Data = GetGroupShortEx(String Name, Short StandardData)
  • Int Data = GetGroupInt(String Name)
  • Int Data = GetGroupIntEx(String Name, Int StandardData)
  • Long Data = GetGroupLong(String Name)
  • Long Data = GetGroupLongEx(String Name, Long StandardData)
  • Float Data = GetGroupFloat(String Name)
  • Float Data = GetGroupFloatEx(String Name, Float StandardData)
  • Double Data = GetGroupDouble(String Name)
  • Double Data = GetGroupDoubleEx(String Name, Double StandardData)
  • String Data = GetGroupString(String Name)
  • String Data = GetGroupStringEx(String Name, String StandardData)
  • SetGroupByte(String Name, Byte Data)
  • SetGroupShort(String Name, Short Data)
  • SetGroupInt(String Name, Int Data)
  • SetGroupLong(String Name, Long Data)
  • SetGroupFloat(String Name, Float Data)
  • SetGroupDouble(String Name, Double Data)
  • SetGroupString(String Name, String Data)
Warbseite

Xaymar

ehemals "Cgamer"

BeitragSa, Jun 04, 2011 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Update
  • Sämtliche Arrayzugriffe gesichert
  • Funktioniert nun wieder mit neuestem xaymar.datapak
Warbseite

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group