如何用ReadFile读取结构的数据成员?
如何用ReadFile读取结构的数据成员?
CString str,str2,str3;
char Filepath[]="F:\\f4\\data\\s2\\tt.DAT";
DWORD dwRead;
HANDLE hFile;
DWORD pFile;
struct tagFILERAM
{
int m_nTy;
time_t time1;
DWORD dwSi;
int nSj;
int nTk;
int nBc;
}FILERAM;
hFile=CreateFile(Filepath ,GENERIC_READ,FILE_SHARE_READ ,
NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS , NULL);
if( INVALID_HANDLE_VALUE == hFile )
{
AfxMessageBox("DataFile is not open!");
};
ReadFile(hFile,FILERAM.nSj,4,&dwRead,NULL);////这里的FILERAM.nSj不能通过
CloseHandle(hFile);
str=FILERAM.nSj.Format("%d");////////这里的FILERAM.nSj不能通过
pDC->TextOut(50,50,str);
想把FILERAM.nSj写成FILERAM->nSj也不行
究竟该怎样写?读数据和.Format语句里面是不是相同?
要求,不要各个数据成员都要分别用SetFilePionter移动指针。
问题点数:20、回复次数:6Top
1 楼auly403(卡西*丁布)回复于 2004-12-04 08:13:04 得分 5
把结构体的地址作参数,然后指定要读的长度.
不过我是用readhuge()的.Top
2 楼hjunxu(hjun)回复于 2004-12-04 08:47:09 得分 10
ReadFile(hFile,FILERAM.nSj,4,&dwRead,NULL);////这里的FILERAM.nSj不能通过
... ...
str=FILERAM.nSj.Format("%d");////////这里的FILERAM.nSj不能通过
这是什么写法啊?Top
3 楼hjunxu(hjun)回复于 2004-12-04 08:52:50 得分 0
FILERAM fr;
ReadFile( hFile, fr ,sizeof(FILERAM),&dwRead,NULL)
.......
str.Format("%d",fr.nSj);
Top
4 楼hjunxu(hjun)回复于 2004-12-04 09:09:52 得分 0
上面我写错了。
ReadFile( hFile, (void *)&fr ,sizeof(FILERAM),&dwRead,NULL);
这样的话只是正好把读近来的数据来填充你的结构而已。
我想不出写法了。
Top
5 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-04 15:14:05 得分 5
你文件不能识别出你的结构Top
6 楼AMDCPU(旺)回复于 2004-12-05 10:06:53 得分 0
谢谢各位!
问题已经解决!
1、要记得先初始化!得到一个实例aa
2、再把ReadFile( hFile, &aa ,sizeof(FILERAM),&dwRead,NULL)
中的第二项指向实例aa的地址!
再用指向aa的指针bb bb->nSj就行了!或是直接aa.nSj
要记住初始化。Top




