我正在调用以下本机 API 从 INI 文件中读取/写入
[DllImport("kernel32.dll")]
private static extern int GetPrivateProfileString( // INI Read
String section,
String key,
String def,
StringBuilder retVal,
int size,
String filePath);
[DllImport("kernel32.dll")]
private static extern long WritePrivateProfileString( // INI Write
String section,
String key,
String val,
String filePath);
public string ReadIni(string sectionString, string keyString, string filePathString)
{
StringBuilder temp = new StringBuilder(200000);
int i = GetPrivateProfileString(sectionString, keyString, "", temp, temp.Capacity, filePathString);
return temp.ToString();
}
// Write (Section, Key, Data, File Path)
public void WriteIni(
string sectionString, string keyString, string dataString, string filePathString)
{
WritePrivateProfileString(sectionString, keyString, dataString, filePathString);
}
读取/写入 ini 文件可以很好地与上面的代码配合使用。
当我尝试读取 ASCII 控制字符时,例如 0x02 (STX) 和 0x03 (ETX),读取函数只返回一个空字符串。编写控制字符效果很好。
通常,我只是避免使用本机 API 来读取/写入 INI 或更好,避免完全使用 ini 文件,但这是我正在修复的一个非常旧的遗留应用程序,因此我需要让这个函数在其中工作它目前的形式。
如何让 GetPrivateProfileString 读取 ASCII 控制字符?