GetPrivateProfileString

GetPrivateProfileString

我想用 GetPrivateProfileString 制作一个 INI 阅读器。我在用什么:

public class Config
{
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string Section, string Key, string Default, StringBuilder RetVal, int Size, string FilePath);

    private string path;

    public Config(string path)
    {
        this.path = path;
    }

    public string PopValue(string section, string key)
    {
        StringBuilder sb = new StringBuilder();
        GetPrivateProfileString(section, key, "", sb, sb.Length, path);
        return sb.ToString();
    }
}

现在我的 INI 文件:
[mysql]
host=localhost

我使用的是什么:
Console.WriteLine(Configuration.PopValue("mysql", "host"));

但是,它只是打印出一个空行而不是 localhost 。我究竟做错了什么?

最佳答案

如果您可以使用第三方库,请尝试使用 Nini
我使用它并且很容易创建/管理复杂的 INI 文件并且是开源的。
GetPrivateProfileString 签名是

DWORD WINAPI GetPrivateProfileString(
  _In_   LPCTSTR lpAppName,
  _In_   LPCTSTR lpKeyName,
  _In_   LPCTSTR lpDefault,
  _Out_  LPTSTR lpReturnedString,
  _In_   DWORD nSize,
  _In_   LPCTSTR lpFileName
);

所以出来不是 StringBuilder 使用 String

关于c# - GetPrivateProfileString 不起作用 .NET,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17469379/

10-12 03:29