'===========================================================================
' Subject: SEARCH FOR PROFILE IN .INI FILE    Date: 11-21-97 (12:44)       
'  Author: rift@hotmail.com                   Code: QB, QBasic, PDS        
'  Origin: rift@hotmail.com                 Packet: MISC.ABC
'===========================================================================
'ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
'³±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±³
'ĆÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
'³ ž Since a lot of Programs use the .INI File Format to save setting       ³
'³ ž If Deceided to Make a Function like The Windows API.                   ³
'³ ž I am not working on a Sub That Will Allow to write into .INI File,     ³
'³ ž I will Post is as soon as its done.                                    ³
'³ ž If You Have any Comments or Suggestion, You Can Reach Me at            ³
'³ ž rift@hotmail.com.                                                      ³
'ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
DECLARE FUNCTION GetPrivateProfileString$ (FileName AS STRING, Section AS STRING, iKey AS STRING)
DECLARE FUNCTION CheckFile% (FileName AS STRING)
FUNCTION CheckFile% (FileName AS STRING)
'ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
'³±±±±±±±±±±±±±±±±±±±±±±±±±±± CheckFile% Function ±±±±±±±±±±±±±±±±±±±±±±±±±±³
'ĆÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
'³ ž This Checks iF The File Exist or Not Without Having To Use ON ERROR.   ³
'³ ž It Returns 1 iF The File is Present and 0 iF Not.                      ³
'³                                                                          ³
'³ ž Usage - Print CheckFile%("C:\AUTOEXEC.BAT") , This Should Returns 1.   ³
'³ ž By The Way , it Doesn't Support Long File Name.                        ³
'ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
IF LEN(FileName) = 0 THEN GOTO CheckFileError
FF% = FREEFILE
OPEN FileName FOR BINARY AS FF%
     IF LOF(FF%) = 0 THEN
        CLOSE FF%
        KILL FileName
        GOTO CheckFileError
     END IF
CLOSE FF%
CheckFile% = 1
EXIT FUNCTION
CheckFileError:
CheckFile% = 0
END FUNCTION
FUNCTION GetPrivateProfileString$ (FileName AS STRING, Section AS STRING, iKey AS STRING)
'ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
'³±±±±±±±±±±±±± GetPrivateProfileString$ Function ±±±±±±±±±±±±±±±±±±±±±±±±±±³
'ĆÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
'³ ž This Returns The Value From The Key oF The Section Given From a .INI.  ³
'³ ž If The Section or The Key Was Not Found it Returns NULL.               ³
'³                                                                          ³
'³ ž Usage - Print GetPrivateProfileString$("SAMPLE.INI","SECTION","KEY1"   ³
'³ ž This Will Returns The Value Needed.                                    ³
'³                                                                          ³
'³ ž WARNING - Do Not Use '[' ']' For The Section.                          ³
'ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
IF CheckFile%(FileName) = 0 THEN GOTO GetPrivateProfileStringError
DIM TempString AS STRING
FF% = FREEFILE
OPEN FileName FOR INPUT AS FF%
     DO UNTIL EOF(FF%)
      LINE INPUT #FF%, TempString
       IF UCASE$(TempString) = CHR$(91) + UCASE$(Section) + CHR$(93) THEN
         GOTO FindiKey
       END IF
     LOOP
CLOSE FF%
GOTO GetPrivateProfileStringError
FindiKey:
DO UNTIL EOF(FF%)
 
LINE INPUT #FF%, TempString
     IF LEFT$(TempString, 1) = CHR$(91) THEN
        GOTO GetPrivateProfileStringError
     END IF
    
     IF LEFT$(UCASE$(TempString), LEN(iKey) + 1) = UCASE$(iKey) + CHR$(61) THEN
        GOTO GetValue
     END IF
LOOP
GOTO GetPrivateProfileStringError
GetValue:
TempString = RIGHT$(TempString, LEN(TempString) - LEN(iKey) - 1)

CLOSE FF%
GetPrivateProfileString$ = TempString
EXIT FUNCTION
GetPrivateProfileStringError:
CLOSE FF%
GetPrivateProfileString$ = "NULL"
END FUNCTION
