首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

定时读取文件中的数据解决方案

2013-11-21 
定时读取文件中的数据函数如下:void CReadFileDlg::OnButtonOpen() {// TODO: Add your control notificat

定时读取文件中的数据
函数如下:void CReadFileDlg::OnButtonOpen() 
{
// TODO: Add your control notification handler code here
char rBuf[1000];
unsigned int temp[100];
unsigned long lpNumber=0;
HANDLE hFile=CreateFile("E:\\程序\\ReadFile\\test1.dat",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
ReadFile(hFile,rBuf,204,&lpNumber,NULL);
int i=2,j=0;
for (i=2;i<=101;i++)
{

    temp[j]=((int)(rBuf[i<<1]&0xff))| ((int)rBuf[(i<<1)+1] << 8);

        j++;
    }
SetTimer(1,20,NULL);

}

void CReadFileDlg::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
char rBuf[1000];
unsigned int temp[100];
unsigned long lpNumber=0;
HANDLE hFile=CreateFile("E:\\程序\\ReadFile\\test1.dat",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
ReadFile(hFile,rBuf,204,&lpNumber,NULL);
int i=2,j=0;
for (i=2;i<=101;i++)
{
    temp[j]=((int)(rBuf[i<<1]&0xff))| ((int)rBuf[(i<<1)+1] << 8);
        j++;
    }
CDialog::OnTimer(nIDEvent);
}
为什么在定时消息响应函数中读取不到数据呢???求大神解答,谢谢!
readfile?,settimer
[解决办法]
你在 OnButtonOpen 函数里头打开了文件,但是没调用 CloseHandle 来关闭文件句柄,也没设共享权限
所以你在计时器里面打开同一个文件时错误肯定时 GetLastError 返回值肯定是 ERROR_ACCESS_DENIED

要不你就把这个文件的句柄设为类内全局变量,要不你打开后读完顺手关了它
共享权限那里再加个 FILE_SHARE_READ

还有很基本的一点,你调用API都不判断一下人家的返回值,到时候出错了跟踪的话麻烦死你
[解决办法]
你可以全部读出来,定时获取数据!!
[解决办法]
你先不用定时器读取数据试试看能不能读,然后再放到定时器中

热点排行