C# 读取ini文件里的内容

Flandre Flandre 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
用的是使用window的api导入dll读取的方式,写了一个GetConfig()的函数,在这个函数里使用GetPrivateProfileString()方法读值是没有问题的,但是如果我把GetPrivateProfileString()方法写到另一个函数SetDouble(string str,double dnum)里,其中str作为GetPrivateProfileString()方法string key的参数,dnum是我要获取的值,在GetConfig()函数里使用SetDouble(string str,double dnum),就会发现读不到值,可能说的绕,下面贴上代码


[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,
string key, string def, StringBuilder retVal,
int size, string filePath);

string szConfig;
string szDirectory = Environment.CurrentDirectory;
double dnum;
double dnumok;

private void GetConfig()
{
szConfig = szDirectory + @"\config.ini";
StringBuilder sbtemp = new StringBuilder();
GetPrivateProfileString("Section", "doubleok", "0.0", sbtemp, 20, szConfig);
dnumok = Convert.ToDouble(sbtemp.ToString()); //这里是没有问题的,可以读到值

SetDouble("dnum",dnum);
MessageBox.Show(dnum.ToString()); //发现dnum全是0,读不到ini文件里的值

// SetDebug(); //如果直接在该函数里把string key直接进去,发现可以读到ini文件里的值
}

public void SetDouble(string strkey, double dnum)
{
StringBuilder sbtmp = new StringBuilder();
GetPrivateProfileString("Section", strkey, "0.0", sbtmp, 20, szConfig);
dnum= Convert.ToDouble(sbtmp.ToString());
}

public void SetDebug()
{
StringBuilder sbtmp = new StringBuilder();
GetPrivateProfileString("Section", "dnum", "0.0", sbtmp, 20, szConfig);
dnum= Convert.ToDouble(sbtmp.ToString());
}



代码重新简写了一下,可能有些错误没检查到,不是直接贴的,大概就是上面那段代码表达的意思,GetPrivateProfileString()中第二个参数string key,作为自定义函数的参数传进去,在函数的函数里调用就发现读不到值
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
Flandre
C# 111,129 成员 642,539 内容