$COMMENT DIM DYNAMIC a$[0] IniReadSectionNames(a,"Test.ini", "TEST") IF a$[0] <> "" THEN DIM nUBound nUBound = VAL(a$[0]) FOR INTEGER iCC = 1 TO nUBound PRINT "Section[" & TRIM$(STR$(iCC)) & "] = " & a[iCC] NEXT iCC ELSE PRINT "Error" ENDIF $COMMENT FUNCTION IniReadSectionNames(aIniSecNames AS STRARRAY, sInFileName$, sSection$) 'Get the fullpathname (ini functions need a full path) LOCAL sFileName AS STRING LOCAL sFilePart AS CHAR PTR GetFullPathName(sInFileName, MAX_PATH, sFileName, &sFilePart) 'Just in case someone is using a dinosaur OS, invoke 32kb limit if needed LOCAL iRes AS INTEGER LOCAL iBuff AS INTEGER iBuff = 32767 IF OSVERSION > 3 THEN iBuff = LOF(sFileName$) + 1 LOCAL DYNAMIC szBuffer[iBuff] AS CHAR iRes = GetPrivateProfileSectionNames(szBuffer, iBuff, sFileName) LOCAL DYNAMIC pIniSec[(iRes)] AS CHAR REDIM aIniSecNames$[(iRes)] LOCAL n,nPadSec,iCC n = -1 : nPadSec = 0 : iCC = 0 WHILE (n++ < (iRes - 1)) IF szBuffer[n] = 0 THEN iCC++ nPadSec = 0 aIniSecNames$[iCC] = pIniSec$ ELSE pIniSec[nPadSec] = szBuffer[n] nPadSec++ ENDIF WEND aIniSecNames$[0] = TRIM$(STR$(iCC)) REDIM PRESERVE aIniSecNames$[iCC+1] FUNCTION = 1 END FUNCTION