[ALMOST SOLVED] Text-Based Settings
I want to make a program that uses text files (or whatever I choose the extension to be) for settings. I have an example from someone's SVN updater for a game. The following is in customaddons.ini. I want to be able to do something similar.
Code:
LuaMenu
http://luastoned.googlecode.com/svn/trunk/luamenu/
LuaMenu
All pointers/help appreciated :).
Re: [ALMOST SOLVED] Text-Based Settings
mconBufferSize is the maximum string length.
mstrIniFilePath is the file path.
You will have to supply your own values there.
Re: [ALMOST SOLVED] Text-Based Settings
Just for fun I made a little xml reader to show what you can do with xml
Code:
Private Class clsServerInfo
Public ServerName As String
Public ServerIP As String
Public Setting1 As Integer
Public Sub ShowDetails()
MsgBox("We have " & ServerName & " on " & ServerIP & " with setttings " & Setting1.ToString)
End Sub
End Class
Private strFileName As String = "c:\myfile.xml"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListServers()
Dim strEntry As String = InputBox("Enter the name of a server", , "test")
WriteServerDetails(New clsServerInfo() With {.ServerName = strEntry, .ServerIP = "56.12.12.1", .Setting1 = 45})
ReadServerDetails(strEntry).ShowDetails()
WriteServerDetails(New clsServerInfo() With {.ServerName = strEntry, .ServerIP = "0.0.12.1", .Setting1 = 55})
ReadServerDetails(strEntry).ShowDetails()
End Sub
Private Sub ListServers()
Dim objXMLFile As New Xml.XmlDocument
If IO.File.Exists(strFileName) Then
objXMLFile.Load(strFileName)
End If
Dim objSettings As Xml.XmlNode = objXMLFile.SelectSingleNode("Settings")
If objSettings Is Nothing Then
objSettings = objXMLFile.AppendChild(objXMLFile.CreateElement("Settings"))
End If
Dim strItems As String = ""
For Each objEntry As Xml.XmlNode In objSettings.ChildNodes
strItems &= objEntry.Name & vbNewLine
Next
If strItems = String.Empty Then
MsgBox("No servers found")
Else
MsgBox("Found: " & vbNewLine & strItems)
End If
End Sub
Private Sub WriteServerDetails(ByVal ServerDetails As clsServerInfo)
Dim objXMLFile As New Xml.XmlDocument
If IO.File.Exists(strFileName) Then
objXMLFile.Load(strFileName)
End If
Dim objSettings As Xml.XmlNode = objXMLFile.SelectSingleNode("Settings")
If objSettings Is Nothing Then
objSettings = objXMLFile.AppendChild(objXMLFile.CreateElement("Settings"))
End If
'Check if the xmlfile already has this entry
Dim objXMLNode As Xml.XmlNode = objSettings.SelectSingleNode(ServerDetails.ServerName)
If objXMLNode Is Nothing Then
objXMLNode = objXMLFile.CreateElement(ServerDetails.ServerName)
objXMLNode.AppendChild(objXMLFile.CreateElement("ServerIP")).InnerText = ServerDetails.ServerIP
objXMLNode.AppendChild(objXMLFile.CreateElement("Setting1")).InnerText = ServerDetails.Setting1.ToString
objSettings.AppendChild(objXMLNode)
Else
objXMLNode.SelectSingleNode("ServerIP").InnerText = ServerDetails.ServerIP
objXMLNode.SelectSingleNode("Setting1").InnerText = ServerDetails.Setting1.ToString
End If
objXMLFile.Save(strFileName)
End Sub
Private Function ReadServerDetails(ByVal ServerName As String) As clsServerInfo
Dim objXMLFile As New Xml.XmlDocument
If IO.File.Exists(strFileName) Then
objXMLFile.Load(strFileName)
End If
Dim objSettings As Xml.XmlNode = objXMLFile.SelectSingleNode("Settings")
If objSettings Is Nothing Then
objSettings = objXMLFile.AppendChild(objXMLFile.CreateElement("Settings"))
End If
Dim objXMLNode As Xml.XmlNode = objSettings.SelectSingleNode(ServerName)
If Not objXMLNode Is Nothing Then
Dim objResult As New clsServerInfo
objResult.ServerName = ServerName
objResult.ServerIP = objXMLNode.SelectSingleNode("ServerIP").InnerText
objResult.Setting1 = CInt(objXMLNode.SelectSingleNode("Setting1").InnerText)
Return objResult
End If
End Function