INI file entries can be so extremely long that the normal way of sizinga string before retrieving the entry may not be sufficient. This most frequentlyis true when retrieving the keyword names for an entire INI file section.Many programmers code something like this:
IniEntry = Space$(512) ' let's hope 512 is big enoughResult = GetProfileString(Section, _ KeyWord, "", IniEntry, Len(IniEntry))If Result > 0 Then IniEntry = Left$(IniEntry, Result)
However, there is no indication that the returned string may have beentruncated. This technique will accommodate any length INI string:
IniEntry = ""Do IniEntry = IniEntry + Space$(512) Result = GetProfileString(Section, _ KeyWord, "", IniEntry, Len(IniEntry))Loop Until Right$(IniEntry, 1) = " "
If IniEntry is not long enough, the rightmost character will containa null character, so the loop will repeat until the rightmost characterremains as a space. The same technique works when retrieving all keywords of a section likethis:
KeyWords = ""Do KeyWords = KeyWords + Space$(512) Result = GetProfileString(Section, 0, "", _ KeyWords, Len(KeyWords))Loop Until Right$(KeyWords, 1) = " "
This assumes that the “KeyWord” parameter for GetProfileStringhas been declared as:
ByVal lpKeyWord As Any