110,538
社区成员
发帖
与我相关
我的任务
分享
[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());
}
public class ConfigHelper{
private string m_strConfig;
public ConfigHelper(string strFileName){ m_strConfig = File.ReadAllText();}
public string GetValueFromKey(stirng strKey){
return Regex.Match(m_strConfig,strKey + ":\s*([^ ]+)").Groups[1].Value
}
}
调用的时候
ConfigHelper ch = new ConfigHelper("your file");
double d = double.Parse(ch.GetValueFromKey("abc"));
直回复框里面手打的代码 可能有错 只是给你一个思路而已 没有必要搞得那么复杂
public class IniFile
{
private string path;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
public IniFile(string fileName)
{
path = fileName;
}
public void IniWriteValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, this.path);
}
public string IniReadValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(Section, Key, "", temp, 500, this.path);
return temp.ToString();
}
public string ReadString(string Section, string Key)
{
return IniReadValue(Section, Key);
}
public bool ReadBoolean(string Section, string Ident, bool Default)
{
try
{
return Convert.ToBoolean(this.ReadString(Section, Ident));
}
catch (Exception exception)
{
return Default;
}
}
public int ReadInteger(string Section, string Ident, int Default)
{
string str = this.ReadString(Section, Ident);
try
{
return Convert.ToInt32(str);
}
catch (Exception exception)
{
return Default;
}
}
public void WriteBool(string Section, string Ident, bool Value)
{
this.WriteString(Section, Ident, Convert.ToString(Value));
}
public void WriteInteger(string Section, string Ident, int Value)
{
this.WriteString(Section, Ident, Value.ToString());
}
public void WriteString(string Section, string Ident, string Value)
{
this.IniWriteValue(Section, Ident, Value);
}
}