无法在C ++ Windows应用程序中使用WriteProfileInt()

时间:2014-05-22 09:05:25

标签: .net winforms winapi c++-cli

我正在编写一个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);

请帮我继续进行。

2 个答案:

答案 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命名空间中的类。