December 03, 2020, 08:07:16 PM

Author Topic: [bb] Simple ini functions for Bmax by Filax [ 1+ years ago ]  (Read 572 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : Simple ini functions for Bmax
Author : Filax
Posted : 1+ years ago

Description : Hi :)

This is the bmax verison of the skn3[ac] ini file for blitz3D.


Code :
Code: BlitzBasic
  1. Strict
  2.  
  3. CFG_WriteValue("Archon", "Video resolution", "Res1", "640")
  4. CFG_WriteValue("Archon", "Video resolution", "Res2", "600")
  5. CFG_WriteValue("Archon", "Video resolution", "Res3", "800")
  6.  
  7. CFG_WriteValue("Archon", "Video frequence", "Freq1", "60")
  8. CFG_WriteValue("Archon", "Video frequence", "Freq2", "70")
  9. CFG_WriteValue("Archon", "Video frequence", "Freq3", "75")
  10.  
  11. Print "INI Value = " + CFG_ReadValue("Archon", "Video resolution", "Res1")
  12. Print "INI Value = " + CFG_ReadValue("Archon", "Video frequence", "Freq4",80)
  13. End
  14.  
  15. ' --------------------------------
  16. ' Read a value under a config file
  17. ' --------------------------------
  18. Function CFG_ReadValue:String(Filename:String, Section:String, Key:String, DefaultValue:String="")
  19.         ' --------------------
  20.         ' Formating parameters
  21.         ' --------------------
  22.         Section:String = "[" + Upper(Trim(Section)) + "]" ; Key:String = Upper(Trim(Key))
  23.         Filename:String = CurrentDir() + ""  + Filename + ".ini"
  24.        
  25.         ' ---------------------------
  26.         ' Read the configuration file
  27.         ' ---------------------------
  28.         Local Content:String= CFG_FileToString(Filename)
  29.         Local UpperContents:String = Upper(Content)
  30.  
  31.         ' ----------------------------
  32.         ' Search the key and the value
  33.         ' ----------------------------
  34.         Local Value:String = "" ; Local SectionPos:Int = Instr(UpperContents, Section)
  35.        
  36.         If SectionPos <> 0 Then
  37.                 Local KeyPos:Int = Instr(UpperContents, Key, (SectionPos + Len(Section) + 1))
  38.                
  39.                 If KeyPos <> 0 Then
  40.                         Local StartPos:Int = Instr(UpperContents, "=", (KeyPos + 1))
  41.                        
  42.                         If StartPos <> 0 Then
  43.                                 Local EndPos:Int = Instr(UpperContents, Chr(0), (StartPos + 1))
  44.                                
  45.                                 If EndPos <> 0 Then
  46.                                         Value = Trim(Mid(Content, StartPos + 1, (EndPos - StartPos - 1)))
  47.                                 End If
  48.                                
  49.                         End If
  50.                 End If
  51.         End If
  52.  
  53.         ' ----------------------------------------------------
  54.         ' If match then return value else return default value
  55.         ' ----------------------------------------------------
  56.         If Value <> "" Then Return Value Else Return DefaultValue
  57. End Function
  58.  
  59. ' ---------------------------------
  60. ' Write a value under a config file
  61. ' ---------------------------------
  62. Function CFG_WriteValue(Filename:String, Section:String, Key:String, Value:String)
  63.         ' --------------------
  64.         ' Formating parameters
  65.         ' --------------------
  66.         Section = "[" + Trim(Section) + "]" ; Key = Trim(Key) ; Value = Trim(Value)
  67.         Filename:String = CurrentDir() + ""  + Filename + ".ini"
  68.  
  69.         ' ---------------------------
  70.         ' Read the configuration file
  71.         ' ---------------------------  
  72.         Local UpperSection:String = Upper(Section)
  73.         Local Content:String= CFG_FileToString(Filename)
  74.  
  75.         ' --------------
  76.         ' Init local var
  77.         ' --------------
  78.         Local WrittenKey:Int = False
  79.         Local SectionFound:Int = False
  80.         Local CurrentSection:String = ""
  81.  
  82.         ' ----------------------------
  83.         ' If the file cannot be opened
  84.         ' ----------------------------
  85.         Local FileHandle:TStream = WriteFile(Filename)
  86.         If Not FileHandle Then Return False
  87.  
  88.         Local OldPos:Int = 1
  89.         Local Position:Int = Instr(Content, Chr(0))
  90.  
  91.         ' ---------------------------
  92.         ' Read the configuration file
  93.         ' ---------------------------
  94.         While Position <> 0
  95.  
  96.                 Local TempString:String =Trim(Mid(Content, OldPos, (Position - OldPos)))
  97.                
  98.                 If TempString <> "" Then
  99.  
  100.                         If Left(TempString, 1) = "[" And Right(TempString, 1) = "]" Then
  101.                                 If CurrentSection = UpperSection And (WrittenKey = False) Then
  102.                                         WrittenKey = CFG_CreateKey(FileHandle, Key, Value)
  103.                                 End If
  104.                                
  105.                                 CurrentSection = Upper(CFG_CreateSection(FileHandle, TempString))
  106.                                
  107.                                 If CurrentSection = UpperSection Then SectionFound = True
  108.                         Else
  109.                                 Local EqualPos:Int = Instr(TempString, "=")
  110.                                
  111.                                 If EqualPos <> 0 Then
  112.                                         If CurrentSection = UpperSection And (Upper(Trim(Left(TempString, (EqualPos - 1)))) = Upper(Key)) Then
  113.                                                 If Value <> "" Then CFG_CreateKey(FileHandle, Key, Value)
  114.                                                 WrittenKey = True
  115.                                         Else
  116.                                                 WriteLine(FileHandle, TempString)
  117.                                         End If
  118.                                 End If
  119.  
  120.                         End If
  121.  
  122.                 End If
  123.  
  124.                 OldPos = Position + 1 ; Position = Instr(Content, Chr(0), OldPos)
  125.         Wend
  126.  
  127.         ' ---------------------------------------
  128.         ' If the key is not under the config file
  129.         ' ---------------------------------------
  130.         If WrittenKey = False Then
  131.                 If SectionFound = False Then CFG_CreateSection FileHandle, Section
  132.                 CFG_CreateKey(FileHandle, Key, Value)
  133.         End If
  134.  
  135.         CloseFile FileHandle
  136.        
  137.         ' -----------
  138.         ' Return TRUE
  139.         ' -----------
  140.         Return True
  141. End Function
  142.  
  143. ' -------------------------------------
  144. ' Return the config file under a string
  145. ' -------------------------------------
  146. Function CFG_FileToString:String(Filename:String)
  147.         Local TempString:String = ""
  148.         Local FileHandle:TStream = ReadFile(Filename)
  149.        
  150.         If FileHandle Then
  151.                 While Not Eof(FileHandle)
  152.                         TempString = TempString + ReadLine(FileHandle) + Chr(0)
  153.                 Wend
  154.                
  155.                 CloseFile FileHandle
  156.         End If
  157.        
  158.         Return TempString
  159. End Function
  160.  
  161. ' -----------------------------------
  162. ' Write a section under a config file
  163. ' -----------------------------------
  164. Function CFG_CreateSection:String(FileHandle:TStream, NewSection:String)
  165.         If StreamPos(FileHandle) <> 0 Then WriteLine FileHandle, ""
  166.         WriteLine FileHandle, NewSection ; Return NewSection
  167. End Function
  168.  
  169. ' ---------------------------------
  170. ' Write a value under a config file
  171. ' ---------------------------------
  172. Function CFG_CreateKey(FileHandle:TStream, Key:String, Value:String)
  173.         WriteLine FileHandle, Key + "=" + Value ; Return True
  174. End Function


Comments :


deps(Posted 1+ years ago)

 Works great! Thanks.


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal