DOCERR: GetPrivateProfileString Declaration Incorrect in API (110826)



The information in this article applies to:

  • Microsoft Visual Basic Professional Edition for Windows 3.0
  • Microsoft Visual Basic Standard Edition for Windows 4.0
  • Microsoft Visual Basic Professional Edition for Windows 4.0
  • Microsoft Visual Basic Enterprise Edition for Windows 4.0

This article was previously published under Q110826

SUMMARY

This article corrects a documentation error for the GetPrivateProfileString function call as described in the Windows version 3.1 API Reference help file that shipped with Microsoft Visual Basic version 3.0 for Windows.

This same documentation error occurs in Visual Basic version 4.0 in the WIN32API.TXT file.

MORE INFORMATION

The declaration is incorrectly shown as:
Declare Function GetPrivateProfileString Lib "Kernel"
                                 (ByVal lpApplicationName As String,
                                  lpKeyName As Any,
                                  ByVal lpDefault As String,
                                  ByVal lpReturnedString As String,
                                  ByVal nSize As Integer,
                                  ByVal lpFileName As String) As Integer
				

The correct declaration is as follows:
Declare Function GetPrivateProfileString Lib "Kernel"
                                 (ByVal lpApplicationName As String,
                                  ByVal lpKeyName As Any,
                                  ByVal lpDefault As String,
                                  ByVal lpReturnedString As String,
                                  ByVal nSize As Integer,
                                  ByVal lpFileName As String) As Integer
				

NOTE: Each Declare statement must be entered as one, single line.

Notice that the "ByVal" keyword was omitted from the second parameter in the online reference. This means that the function is passing the second parameter (lpKeyName) by reference. It needs to be passed by value.

The most common problem that occurs when using the incorrect declaration is that when the function is called, it returns a copy of "lpdefault" in the "lpReturnedString" parameter instead of the actual value referenced by KeyName.

Modification Type:MajorLast Reviewed:5/6/2003
Keywords:KB110826