真神奇,vc读ini文件时怎么读出来同一个数据?会的请进。

时间:2021-06-29 04:25:57
CString FileName = _T("\\Configure.ini");
CGlobalConfiguration GobalConfigure;
FileName = GobalConfigure.m_strConfigurePath + FileName;

CString mac;  //用于保存物理地址
static CString DeviceN;   //保存设备名
static CString Upper;    //保存数据上
static CString Lower;    //保存数据下

CString macTemp = m_PlatformInfo.GetItemText(row, 3);
for(int index = 0;index<18;index++)
{
CString appName;
    appName.Format(_T("WeightPlatForm_%d"), index);
GetPrivateProfileString(appName,_T("MAC Address"), _T("Can't find any adrress"), (LPTSTR)(LPCTSTR)mac, MAX_PATH, FileName);
if(mac == macTemp)
{
GetPrivateProfileString(appName, _T("Device Name"), _T(""), (LPTSTR)(LPCTSTR)DeviceN, MAX_PATH, FileName);
page[index].m_strDeviceName = DeviceN;
GetPrivateProfileString(appName, _T("Data Upper"), _T(""), (LPTSTR)(LPCTSTR)Upper, MAX_PATH, FileName);
page[index].m_strDataUpper = Upper;
GetPrivateProfileString(appName, _T("Data Lower"), _T(""), (LPTSTR)(LPCTSTR)Lower, MAX_PATH, FileName);
page[index].m_strDataLower = Lower;
CString log;
log.Format(_T("Name = [%s],Up = [%s],Low = [%s]"),DeviceN,Upper,Lower);
MessageBox(log);

UpdateData(TRUE);
MessageBox(_T("装载完毕!"));
return;
}
}
代码如上,怎么的用来保存数据的DeviceN,Upper和Lower都是同一个数据,是Data Lower的数据,怎么会这样?我的ini文件存:
[WeightPlatForm_0]
MAC Address=DD817401304B1230
Device Name=kindle fire
Data Upper=10.000
Data Lower=05.000
[WeightPlatForm_1]
MAC Address=84982F01304B1230
Device Name=nook tablet
Data Upper=08.000
Data Lower=04.000
[WeightPlatForm_2]
MAC Address=EMPTY
Device Name=NAME
Data Upper=15.000
Data Lower=00.000
............等等18个设备数据
假如读MAC Address=DD817401304B1230设备的设备名称,数据上和数据下,log显示的是Name = 05.000,Up = 05.000,Low = 05.000 ,这是什么问题?

12 个解决方案

#1


试试看
TCHAR mac[MAX_PATH+1]; //用于保存物理地址
TCHAR DeviceN[MAX_PATH+1]; //保存设备名
TCHAR Upper[MAX_PATH+1]; //保存数据上
TCHAR Lower[MAX_PATH+1]; //保存数据下

CString类型的读还可以,写入的话得当心越界 

#2


Debug下调试看看应该就很清楚了吧

#3


static CString DeviceN; //保存设备名
static CString Upper; //保存数据上
static CString Lower; //保存数据下

去掉那个可恶的static就可以了。

#4


debug编译无错
static 是我和面加的,在我加之前是一样情况

#5


没有环境,感觉if(mac == macTemp)是问题。

#6


是不是用了一个变量去存值了

#7


我肯定不会用同一个变量存;1楼的方法管用,谢谢啊

#8


如果1L方法管用,那可是是覆盖问题。

#10


GetPrivateProfileString(Section,Item,NULL,DeviceN.GetBuffer(MAX_PATH),MAX_PATH,FileName);

#11


在调用时GetPrivateProfileString不要用CString, 用TCHAR

#12


别用static

#1


试试看
TCHAR mac[MAX_PATH+1]; //用于保存物理地址
TCHAR DeviceN[MAX_PATH+1]; //保存设备名
TCHAR Upper[MAX_PATH+1]; //保存数据上
TCHAR Lower[MAX_PATH+1]; //保存数据下

CString类型的读还可以,写入的话得当心越界 

#2


Debug下调试看看应该就很清楚了吧

#3


static CString DeviceN; //保存设备名
static CString Upper; //保存数据上
static CString Lower; //保存数据下

去掉那个可恶的static就可以了。

#4


debug编译无错
static 是我和面加的,在我加之前是一样情况

#5


没有环境,感觉if(mac == macTemp)是问题。

#6


是不是用了一个变量去存值了

#7


我肯定不会用同一个变量存;1楼的方法管用,谢谢啊

#8


如果1L方法管用,那可是是覆盖问题。

#9


#10


GetPrivateProfileString(Section,Item,NULL,DeviceN.GetBuffer(MAX_PATH),MAX_PATH,FileName);

#11


在调用时GetPrivateProfileString不要用CString, 用TCHAR

#12


别用static