Code archives/File Utilities/Simple ini functions for Bmax
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Hi :) This is the bmax verison of the skn3[ac] ini file for blitz3D. | |||||
Strict CFG_WriteValue("Archon", "Video resolution", "Res1", "640") CFG_WriteValue("Archon", "Video resolution", "Res2", "600") CFG_WriteValue("Archon", "Video resolution", "Res3", "800") CFG_WriteValue("Archon", "Video frequence", "Freq1", "60") CFG_WriteValue("Archon", "Video frequence", "Freq2", "70") CFG_WriteValue("Archon", "Video frequence", "Freq3", "75") Print "INI Value = " + CFG_ReadValue("Archon", "Video resolution", "Res1") Print "INI Value = " + CFG_ReadValue("Archon", "Video frequence", "Freq4",80) End ' -------------------------------- ' Read a value under a config file ' -------------------------------- Function CFG_ReadValue:String(Filename:String, Section:String, Key:String, DefaultValue:String="") ' -------------------- ' Formating parameters ' -------------------- Section:String = "[" + Upper(Trim(Section)) + "]" ; Key:String = Upper(Trim(Key)) Filename:String = CurrentDir() + "\" + Filename + ".ini" ' --------------------------- ' Read the configuration file ' --------------------------- Local Content:String= CFG_FileToString(Filename) Local UpperContents:String = Upper(Content) ' ---------------------------- ' Search the key and the value ' ---------------------------- Local Value:String = "" ; Local SectionPos:Int = Instr(UpperContents, Section) If SectionPos <> 0 Then Local KeyPos:Int = Instr(UpperContents, Key, (SectionPos + Len(Section) + 1)) If KeyPos <> 0 Then Local StartPos:Int = Instr(UpperContents, "=", (KeyPos + 1)) If StartPos <> 0 Then Local EndPos:Int = Instr(UpperContents, Chr(0), (StartPos + 1)) If EndPos <> 0 Then Value = Trim(Mid(Content, StartPos + 1, (EndPos - StartPos - 1))) End If End If End If End If ' ---------------------------------------------------- ' If match then return value else return default value ' ---------------------------------------------------- If Value <> "" Then Return Value Else Return DefaultValue End Function ' --------------------------------- ' Write a value under a config file ' --------------------------------- Function CFG_WriteValue(Filename:String, Section:String, Key:String, Value:String) ' -------------------- ' Formating parameters ' -------------------- Section = "[" + Trim(Section) + "]" ; Key = Trim(Key) ; Value = Trim(Value) Filename:String = CurrentDir() + "\" + Filename + ".ini" ' --------------------------- ' Read the configuration file ' --------------------------- Local UpperSection:String = Upper(Section) Local Content:String= CFG_FileToString(Filename) ' -------------- ' Init local var ' -------------- Local WrittenKey:Int = False Local SectionFound:Int = False Local CurrentSection:String = "" ' ---------------------------- ' If the file cannot be opened ' ---------------------------- Local FileHandle:TStream = WriteFile(Filename) If Not FileHandle Then Return False Local OldPos:Int = 1 Local Position:Int = Instr(Content, Chr(0)) ' --------------------------- ' Read the configuration file ' --------------------------- While Position <> 0 Local TempString:String =Trim(Mid(Content, OldPos, (Position - OldPos))) If TempString <> "" Then If Left(TempString, 1) = "[" And Right(TempString, 1) = "]" Then If CurrentSection = UpperSection And (WrittenKey = False) Then WrittenKey = CFG_CreateKey(FileHandle, Key, Value) End If CurrentSection = Upper(CFG_CreateSection(FileHandle, TempString)) If CurrentSection = UpperSection Then SectionFound = True Else Local EqualPos:Int = Instr(TempString, "=") If EqualPos <> 0 Then If CurrentSection = UpperSection And (Upper(Trim(Left(TempString, (EqualPos - 1)))) = Upper(Key)) Then If Value <> "" Then CFG_CreateKey(FileHandle, Key, Value) WrittenKey = True Else WriteLine(FileHandle, TempString) End If End If End If End If OldPos = Position + 1 ; Position = Instr(Content, Chr(0), OldPos) Wend ' --------------------------------------- ' If the key is not under the config file ' --------------------------------------- If WrittenKey = False Then If SectionFound = False Then CFG_CreateSection FileHandle, Section CFG_CreateKey(FileHandle, Key, Value) End If CloseFile FileHandle ' ----------- ' Return TRUE ' ----------- Return True End Function ' ------------------------------------- ' Return the config file under a string ' ------------------------------------- Function CFG_FileToString:String(Filename:String) Local TempString:String = "" Local FileHandle:TStream = ReadFile(Filename) If FileHandle Then While Not Eof(FileHandle) TempString = TempString + ReadLine(FileHandle) + Chr(0) Wend CloseFile FileHandle End If Return TempString End Function ' ----------------------------------- ' Write a section under a config file ' ----------------------------------- Function CFG_CreateSection:String(FileHandle:TStream, NewSection:String) If StreamPos(FileHandle) <> 0 Then WriteLine FileHandle, "" WriteLine FileHandle, NewSection ; Return NewSection End Function ' --------------------------------- ' Write a value under a config file ' --------------------------------- Function CFG_CreateKey(FileHandle:TStream, Key:String, Value:String) WriteLine FileHandle, Key + "=" + Value ; Return True End Function |
Comments
| ||
Works great! Thanks. |
Code Archives Forum