.ini配置文件的存取

本文展示了一个使用C++在Windows环境下通过GetPrivateProfileString和WritePrivateProfileString函数读取和写入INI配置文件的具体例子。该示例包括了如何获取程序路径、构造配置文件路径及读写配置项如短信中心号码、IP地址、端口号等。

 TCHAR exeFullPath[MAX_PATH]; // MAX_PATH在API中有定义,为128  int len=GetModuleFileName(NULL,  exeFullPath, //应用程序的全路径存放地址  MAX_PATH);  CString path="//config.ini"; //配置文件名  ::strcpy(exeFullPath+len-12,path); //组合出配置文件的全路径

//读取

    CString szComCheck ;  CString szBaud ;  GetPrivateProfileString("短信中心号码", "SMSC","+8613800280500", strSMSC.GetBuffer(MAX_PATH),MAX_PATH,exeFullPath);     GetPrivateProfileString("IP地址", "IP","127.0.0.1",strIP.GetBuffer(MAX_PATH),MAX_PATH,exeFullPath);  GetPrivateProfileString("网络端口号", "NetPort","",strNetPort.GetBuffer(MAX_PATH),MAX_PATH,exeFullPath);  GetPrivateProfileString("定时周期", "TimeCycle","",strTimeCycle.GetBuffer(MAX_PATH),MAX_PATH,exeFullPath);     for(int i=0; i<8; i++)  {     szComCheck.Format("COMCheck%d",i);   GetPrivateProfileString("串口选中状态", szComCheck,"0", strCheck[i].GetBuffer(MAX_PATH),MAX_PATH,exeFullPath);   szBaud.Format("Baud%d",i);   GetPrivateProfileString("波特率", szBaud ,"9600", strBaud[i].GetBuffer(MAX_PATH),MAX_PATH,exeFullPath);  }

 

 TCHAR exeFullPath[MAX_PATH]; // MAX_PATH在API中有定义,为128  int len=GetModuleFileName(NULL,  exeFullPath, //应用程序的全路径存放地址  MAX_PATH);  CString path="//Config.ini"; //配置文件名  ::strcpy(exeFullPath+len-12,path); //组合出配置文件的全路径

//存入          CString szComCheck ;  CString szBaud ;  WritePrivateProfileString("短信中心号码", "SMSC", strSMSC,exeFullPath);     WritePrivateProfileString("IP地址", "IP",strIP,exeFullPath);  WritePrivateProfileString("网络端口号", "NetPort",strNetPort,exeFullPath);  WritePrivateProfileString("定时周期", "TimeCycle",strTimeCycle,exeFullPath);     for(int i=0; i<8; i++)  {     szComCheck.Format("COMCheck%d",i);   WritePrivateProfileString("串口选中状态", szComCheck, strCheck[i],exeFullPath);   szBaud.Format("Baud%d",i);   WritePrivateProfileString("波特率", szBaud , strBaud[i],exeFullPath);  }

### 如何在 Unity 中创建和读取 INI 配置文件 #### 创建用于处理 INI 文件的基类 为了方便后续项目的调用,在 Unity 下可以先构建一个专门用来操作 INI 文件的基础类。这个基础类会依赖于 `System.Runtime.InteropServices` 命名空间来实现对 Windows API 的调用功能,从而完成对 INI 文件的操作[^1]。 ```csharp using System; using System.IO; using UnityEngine; public static class IniFileHelper { [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 static void WriteValue(string filePath, string section, string key, string value){ WritePrivateProfileString(section, key, value,filePath); } public static string ReadValue(string filePath,string section, string key){ StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString(section, key, "",temp , 255, filePath); return temp.ToString(); } } ``` 上述代码定义了一个静态方法 `WriteValue` 来写入数据到指定路径下的 INI 文件中;另一个静态方法 `ReadValue` 则是从给定位置读取特定键对应的值。 #### 使用该工具类进行实际操作 当准备好以上辅助函数之后,则可以在具体场景里通过如下方式打开并访问位于 StreamingAssets 路径中的配置文档: ```csharp string configPath = Path.Combine(Application.streamingAssetsPath,"iConfig.ini"); // 将字符串转义为适合传递给 WinAPI 函数的形式 configPath = Uri.UnescapeDataString(configPath.Replace("\\", "\\\\")); IniFileHelper.WriteValue(configPath, "Settings","ResolutionWidth","800"); Debug.Log($"Current Resolution Width is {IniFileHelper.ReadValue(configPath,"Settings","ResolutionWidth")}"); ``` 这段脚本展示了怎样利用前面提到的帮助程序向名为 “iConfig.ini” 的设置项内存储屏幕分辨率宽度的信息,并立即打印出来验证是否成功存取了设定好的参数[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值