我正在编写一个C ++应用程序,我想为INI文件写一个整数值,这样每次运行应用程序时都可以保留它。
但我无法在我的程序中使用WriteProfileInt()API,每当我使用它时它会给我以下错误: - 'WriteProfileInt':未找到标识符
然而GetProfileInt()工作正常,任何人都可以建议我该怎么办? 我正在使用Visual Studio 2013。
这是我正在使用的示例代码: -
public ref class main_form : public System::Windows::Forms::Form
{
public:
int i2c_addr;
int temp;
main_form(void)
{
InitializeComponent();
}
void InitializeComponent(void)
{
WriteProfileInt(_T("device"),_T("i2c_address"),8);
temp = GetProfileInt(_T("device"),_T("i2c_address"),0);
this->i2c_addr = temp;
}
}
但是它给了我WriteProfileInt的错误(_T(“设备”),_ T(“i2c_address”),8);
请帮我继续进行。
答案 0 :(得分:1)
在API级别,您需要执行以下操作:
char bf[50];
sprintf(bf,"%d", my_int_value);
WriteProfileString("MyApp", "MySection", bf); // will write to the registry
WritePrivateProfileString("C:\\myprog\\myprog.ini", "MySection", bf); // will write to the ini file
希望这有帮助
答案 1 :(得分:1)
您的代码正在尝试将时钟设置为21年。返回Windows 3.11,仍然具有Win.ini配置文件的最新版本的Windows。
那不再适用了。 winapi仍然支持GetProfileInt()模拟Win.ini文件中的一些常见条目并保持遗留代码运行。但WriteProfileInt()已被完全删除,没有希望假装.ini文件仍然存在并且可能正常运行。向后兼容性在Windows中非常具有传奇色彩,但降压在某处停止。你找到了哪里。
System.ini和Win.ini已在功能上被注册表替换。您也可以使用它来代替RegistryKey class提供对注册表的访问权限。在.NET中,应用程序设置是仍然保持基于配置文件的建议替代方案。从C ++ / CLI不方便,IDE没有像其他语言那样的设置设计器。将配置保存在XML文件中通常是一个不错的选择,使用System.Xml命名空间中的类。