简体   繁体   English

从INI文件读取

[英]Reading from an INI file

I find it very easy to write to a INI file, but am having some trouble in retrieving the data from an already created INI file. 我发现写入INI文件非常容易,但是从已经创建的INI文件中检索数据时遇到了一些麻烦。

I am using this function: 我正在使用此功能:

    Public Declare Unicode Function GetPrivateProfileString Lib "kernel32" _
    Alias "GetPrivateProfileStringW" (ByVal lpApplicationName As String, _
    ByVal lpKeyName As String, ByVal lpDefault As String, _
    ByVal lpReturnedString As String, ByVal nSize As Int32, _
    ByVal lpFileName As String) As Int32

If I have an INI file called 'c:\\temp\\test.ini', with the following data: 如果我有一个名为'c:\\ temp \\ test.ini'的INI文件,其中包含以下数据:

[testApp]
KeyName=keyValue
KeyName2=keyValue2

How can I retrieve the values of KeyName and KeyName2? 如何检索KeyName和KeyName2的值?

I have tried this code, with no success: 我尝试了这段代码,但没有成功:

    Dim strData As String
    GetPrivateProfileString("testApp", "KeyName", "Nothing", strData, Len(strData), "c:\temp\test.ini")
    MsgBox(strData)

Going to the Pinvoke.Net Web site and modifying their example worked, their Function declaration is different. 转到Pinvoke.Net网站并修改其示例后,它们的Function声明就不同了。

Modified Example 修改示例

Imports System.Runtime.InteropServices
Imports System.Text
Module Module1
    Private Declare Auto Function GetPrivateProfileString Lib "kernel32" (ByVal lpAppName As String, _
            ByVal lpKeyName As String, _
            ByVal lpDefault As String, _
            ByVal lpReturnedString As StringBuilder, _
            ByVal nSize As Integer, _
            ByVal lpFileName As String) As Integer

    Sub Main()

        Dim res As Integer
        Dim sb As StringBuilder

        sb = New StringBuilder(500)
        res = GetPrivateProfileString("testApp", "KeyName", "", sb, sb.Capacity, "c:\temp\test.ini")
        Console.WriteLine("GetPrivateProfileStrng returned : " & res.ToString())
        Console.WriteLine("KeyName is : " & sb.ToString())
        Console.ReadLine();

    End Sub
End Module

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM