vc 的问题为什么要投到Basic栏。是不是我的问题太简单了?如果您知道答案,请指教!

解决方案 »

  1.   

    CFile::modeRead and CFile::shareDenyNone
    "and"是何意思?
      

  2.   

    你打开的是什么文件?是foxpro的库文件吗?
      

  3.   

    是打开文件的问题,你在打开时,属性设置为shareDenyNone,这时,如果有别的程序在操作这个文件时,两者可能会起冲突,你知道,NT比98的保护机制好多了。所有你还是在打开文件时用独占方式比较好。另外,试试以二进制方式。
      

  4.   

    to:hefeng
    我本来粘贴上去的是c中的“或”符号,不知怎么显示出来就变成了“and”,是不是csdn的脚本有问题啊?to:Kerrie
    谢谢你的回答,不过我每次也都是重新打开文件的。仍然读不到最新的内容。但如果使用foxpro打开源文件,我的程序读到的内容也更新了。你知道为什么吗?to:softsprite
    我打开的是fox数据库文件,但为了速度快,我是用二进制打开的没有使用数据库引擎。我是先读入文件头,判断记录数和记录大小,再用read(buf,record_num*record_length)一次读入所以的记录内容。to:zzh
    二进制方式今天早上试过了,没有效果。而且,该源文件既有程序读又有程序写,我实在没有办法使用独占方式打开。你还有更好的办法么?
      

  5.   

    >我本来粘贴上去的是c中的“或”符号,不知怎么显示出来就变成了“and”,是不是>csdn的脚本有问题啊?
    对,CSDN会'翻译'你的符号!
      

  6.   

    to kerrie:
    上次打开的用readfile.Close()关闭了。
      

  7.   

    应该是代码的问题。现在我发现,这是因为CFile在打开文件时屏蔽了dwFlagsAndAttributes字段的缘故,这样无论你是不是使用FILE_FLAG_NO_BUFFERING,CFile都不能防止系统使用BUFFER。我现在使用windows函数CreateFile()。代码如下:
    SECURITY_ATTRIBUTES sec;
    sec.bInheritHandle =false;
    sec.lpSecurityDescriptor =NULL;
    sec.nLength =sizeof(SECURITY_ATTRIBUTES);
    readfile=CreateFile(
     LPCTSTR (filename),
     GENERIC_READ|GENERIC_WRITE,       
     FILE_SHARE_READ|FILE_SHARE_WRITE,
     &sec,
     OPEN_EXISTING, 
     FILE_FLAG_NO_BUFFERING, 
     NULL );就可以读到远程文件的变化了。谢谢大家的热烈参与。
      

  8.   

    是的CSDN将 '| |' 翻译成 And
     大家看
    ||