Ooops
November 25, 2020, 05:05:24 AM

Author Topic: [bb] more INI funcs by gman [ 1+ years ago ]  (Read 584 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] more INI funcs by gman [ 1+ years ago ]
« on: June 29, 2017, 12:28:42 AM »
Title : more INI funcs
Author : gman
Posted : 1+ years ago

Description : this is another set of INI access functions.  they use the decls definitions of <a href="codearcsbb99.html?code=1138" >kernel32.dll decls for INI access[/url].

Code :
Code: BlitzBasic
  1. ; writes a value to an INI file
  2. Function ini_write(Section$,Key$,Value$,File$)
  3.         IniWrite(Section$, Key$, Value$, File$)
  4. End Function
  5.  
  6. ; reads a value from an INI file
  7. Function ini_read$(Section$,Key$,File$,Dflt$="",nReadSize=100)
  8.         Local bank,nRet=0,cRetVal$=Dflt$,nCnt=0,char=0
  9.        
  10.         bank=CreateBank(nReadSize)
  11.         nRet=IniRead(Section$,Key$,Dflt$,bank,BankSize(bank),File$)
  12.        
  13.         ; make sure we have something
  14.         If nRet>0
  15.                 cRetVal$=""
  16.                
  17.                 ; loop thru the characters returned
  18.                 For nCnt=0 To nRet-1
  19.                         ; get the next character
  20.                         char=PeekByte(bank,nCnt)
  21.                         ; check if at string end
  22.                         If char=0 Then Exit
  23.                         ; add the character to the return value
  24.                         cRetVal$=cRetVal$+Chr(char)
  25.                 Next
  26.         EndIf
  27.        
  28.         FreeBank bank
  29.        
  30.         Return cRetVal$
  31. End Function
  32.  
  33. ; reads in all the value names from a section in an INI file and returns a delimited string list
  34. ; can optionally return values with the names
  35. Function ini_enumvalues$(Section$,File$,lValues=False,ValDflt$="",delim$="|",nReadSize=2000)
  36.         Local bank,nRet=0,nCnt=0,char=0,temp$="",cRetVal$=""
  37.        
  38.         bank=CreateBank(nReadSize)
  39.         nRet=IniEnumValues(Section$,0,"",bank,BankSize(bank),File$)
  40.        
  41.         ; make sure we have something
  42.         If nRet>0
  43.                 ; loop thru the characters returned
  44.                 For nCnt=0 To nRet-1
  45.                         ; get the next char
  46.                         char=PeekByte(bank,nCnt)
  47.                        
  48.                         ; char 0 means we are at the end of the current value
  49.                         If char=0
  50.                                 ; we are done with the current value name, now get the value and add both to the
  51.                                 ; final result
  52.                                 cRetVal$=cRetVal$+temp$
  53.                                
  54.                                 ; get the value if needed
  55.                                 If lValues
  56.                                         cRetVal$=cRetVal$+"="+ini_read(Section$,temp$,File$,ValDflt$)
  57.                                 EndIf
  58.                                
  59.                                 ; if this is not the last name/value pair, add on the delimiter
  60.                                 If nCnt<(nRet-1)
  61.                                         cRetVal$=cRetVal$+delim$
  62.                                 EndIf
  63.                                
  64.                                 ; clear out the temp to make way for the next value
  65.                                 temp$=""
  66.                         Else
  67.                                 ; add in the current character
  68.                                 temp$=temp$+Chr(char)
  69.                         EndIf
  70.                 Next
  71.         EndIf
  72.                
  73.         FreeBank bank
  74.        
  75.         Return cRetVal$
  76. End Function
  77.  
  78. ; reads in all the sections from an INI file and returns a delimited string list
  79. Function ini_enumsections$(File$,delim$="|",nReadSize=2000)
  80.         Local bank,nRet=0,nCnt=0,char=0,temp$="",cRetVal$=""
  81.        
  82.         bank=CreateBank(nReadSize)
  83.         nRet=IniEnumSections(0,0,"",bank,BankSize(bank),File$)
  84.        
  85.         ; make sure we have something
  86.         If nRet>0      
  87.                 ; loop thru the characters returned
  88.                 For nCnt=0 To nRet-1
  89.                         ; get the next char
  90.                         char=PeekByte(bank,nCnt)
  91.                        
  92.                         ; char 0 means we are at the end of the current section name
  93.                         If char=0
  94.                                 ; add the current section to the final result
  95.                                 cRetVal$=cRetVal$+temp$                        
  96.  
  97.                                 ; if this is not the last name, add on the delimiter
  98.                                 If nCnt<(nRet-1)
  99.                                         cRetVal$=cRetVal$+delim$
  100.                                 EndIf
  101.                                
  102.                                 ; clear out the temp to make way for the next section name
  103.                                 temp$=""
  104.                         Else
  105.                                 ; add in the current character
  106.                                 temp$=temp$+Chr(char)
  107.                         EndIf
  108.                 Next
  109.         EndIf
  110.                
  111.         FreeBank bank
  112.        
  113.         Return cRetVal$
  114. End Function


Comments :


neos300(Posted 1+ years ago)

 Is this basically a wrapper for some kernel functions?


Beaker(Posted 1+ years ago)

 Yes. It says so at the top.


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal