如果.ini的路径名超过128个字符,则不会保存.ini文件中的某些字段

时间:2010-10-14 17:50:24

标签: visual-c++ windows-xp

我正在使用Visual Studio 2003 C ++中的程序,该程序使用.ini文件保存数据。该程序已经编写完成;它是一个完整的Windows应用程序,可以分析从睡眠实验室获取的患者数据(很多很多行代码)。

该程序使用.ini文件来读取和写入患者数据,例如患者姓名,患者姓名,医生姓名等。有一天,我的老板告诉我,如果.ini的路径太长,一些数据就不会被保存。

在进一步检查时,我发现如果.ini文件的完整路径名大于128个字符,则该.ini文件中的某些字段不会保存到磁盘。这很奇怪,因为其他领域确实得到了保存,而其他领域则没有。

我不确定,这是Windows的问题,还是可能与代码有关?该代码使用GetPrivateProfileString()和WritePrivateProfileString()函数来写入和读取ini文件。据我所知,它将所有ini文件视为相同,只需在需要时读取它们,并在保存文件时写入它们。

我真的很好奇为什么某些字段会被保存,而有些字段在路径大于128个字符时则不会。有没有人对这个问题属于哪个领域以及幕后发生的事情有任何想法?

程序编写如下: Visual Studio 2003

操作系统是: Windows XP

感谢您提供任何帮助和见解:)

** * *** *编辑: 原来代码使用OpenFile函数http://msdn.microsoft.com/en-us/library/aa365430(VS.85).aspx来打开ini文件,这只允许最多128个字符。

我将尝试在不破坏代码的情况下将功能更改为CreateFile函数....

1 个答案:

答案 0 :(得分:0)

我的猜测是代码中的某处有一个128字节的文件名CHAR缓冲区。根据代码路径的不同,在该缓冲区中使用较长的文件名字符串可能有效,也可能无效。很可能一些写入可能有效而其他写入失败,但如果您的代码正确处理错误,您会认为您会通过合适的错误日志找出失败。