加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – GetPrivateProfileString不工作.NET

发布时间:2020-12-16 01:55:49 所属栏目:百科 来源:网络整理
导读:我想用GetPrivateProfileString创建一个INI阅读器.我在用什么: public class Config{ [DllImport("kernel32")] private static extern int GetPrivateProfileString(string Section,string Key,string Default,StringBuilder RetVal,int Size,string FilePa
我想用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
);

所以out不是StringBuilder使用String

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读