WritePrivateProfileString 的疑问

blue12_sky322 2011-09-30 09:21:40
临时需求,我需要用C# 调用这个函数写ini文件. 路径写对的话可以读写. 但是这个函数怎么检测写入失败呢? 我看资料说是返回值非0表示成功,0表示失败. 我实验时,无论如何都返回的是非0值. 什么情况下它会写入失败.
...全文
269 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoucong1020 2011-09-30
  • 打赏
  • 举报
回复
我试了,这个会分两种情况,如果制定一个不存在的路径,例如你说的"Z:\\temp.ini",那么函数会如期返回false,如果仅指定文件名,那么他会将文件写入到C:\\windows里,并返回true
读取函数的情况类似,如果指定不存在的路径,函数返回false,仅指定文件名,函数会到C:\\windows去找,找到了返回true,没找到返回false
blue12_sky322 2011-09-30
  • 打赏
  • 举报
回复
对啊, 我想问的是它在什么情况下会写入失败.
我故意把文件地址写成"Z:\\temp.ini"或"temp.ini",我没Z盘,并且它要求是完全路径. 所以这两个地址是错的. 可这个函数自己找不到文件,就把文件写在了 windows 系统文件夹下. 所以我想不出它在什么情况下会写入失败呢
zhoucong1020 2011-09-30
  • 打赏
  • 举报
回复
我们用bool返回值是正确的
[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern bool GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

函数原形
BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);
zhoucong1020 2011-09-30
  • 打赏
  • 举报
回复
函数原形是
BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);
返回值应该是bool,我们这么用是对的
[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern bool GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧