一个百思不解的问题!

panyan 2000-07-25 11:18:00
我用vc6.0写了一个小程序,把一个网络驱动器的频繁变化的文件的变化写到另一个网络驱动器。
我总是打开源文件,找出变化的记录,再把变化的记录写入目标文件。问题是,在NT下,该程序运行
正常;在win95下我读到的源文件的内容总是不变的,但是,如果系统同时运行foxpro,源文件的内容
就变化了。估计是我打开文件的方式有问题,打开文件的代码如下:
CFile readfile;
CFileException fileException;

if (!readfile.Open(
(LPCTSTR)filename,
CFile::modeRead and CFile::shareDenyNone,&fileException ))
{
AfxMessageBox( "Can't open file "+filename+" error = "+IntToString ( fileException.m_cause ) );
}

谢谢。
...全文
592 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
UserReg 2000-08-01
  • 打赏
  • 举报
回复
哦,现在不翻译了
UserReg 2000-08-01
  • 打赏
  • 举报
回复
是的CSDN将 '| |' 翻译成 And
大家看
||
panyan 2000-07-27
  • 打赏
  • 举报
回复
应该是代码的问题。现在我发现,这是因为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 );

就可以读到远程文件的变化了。谢谢大家的热烈参与。
Kerrie 2000-07-26
  • 打赏
  • 举报
回复
古怪,没有理由呀,我以前重打开后就可以读到最近更新的内容了!
可以肯定是这段c代码的问题吗?
panyan 2000-07-26
  • 打赏
  • 举报
回复
to kerrie:
上次打开的用readfile.Close()关闭了。
ffb 2000-07-26
  • 打赏
  • 举报
回复
>我本来粘贴上去的是c中的“或”符号,不知怎么显示出来就变成了“and”,是不是>csdn的脚本有问题啊?
对,CSDN会'翻译'你的符号!
Kerrie 2000-07-26
  • 打赏
  • 举报
回复
你重新打开文件时,上次打开的文件关闭了吗?
panyan 2000-07-26
  • 打赏
  • 举报
回复
to:hefeng
我本来粘贴上去的是c中的“或”符号,不知怎么显示出来就变成了“and”,是不是csdn的脚本有问题啊?

to:Kerrie
谢谢你的回答,不过我每次也都是重新打开文件的。仍然读不到最新的内容。但如果使用foxpro打开源文件,我的程序读到的内容也更新了。你知道为什么吗?

to:softsprite
我打开的是fox数据库文件,但为了速度快,我是用二进制打开的没有使用数据库引擎。我是先读入文件头,判断记录数和记录大小,再用read(buf,record_num*record_length)一次读入所以的记录内容。

to:zzh
二进制方式今天早上试过了,没有效果。而且,该源文件既有程序读又有程序写,我实在没有办法使用独占方式打开。你还有更好的办法么?
Kerrie 2000-07-25
  • 打赏
  • 举报
回复
你最好把这个投到Basic栏
zzh 2000-07-25
  • 打赏
  • 举报
回复
是打开文件的问题,你在打开时,属性设置为shareDenyNone,这时,如果有别的程序在操作这个文件时,两者可能会起冲突,你知道,NT比98的保护机制好多了。所有你还是在打开文件时用独占方式比较好。另外,试试以二进制方式。
U皮特U 2000-07-25
  • 打赏
  • 举报
回复
你打开的是什么文件?是foxpro的库文件吗?
Kerrie 2000-07-25
  • 打赏
  • 举报
回复
非常抱歉,我开始看错问题了。
这里大家一样都是编程爱好者,无所谓简单或者什么的,请不要误会。。。
你说的问题我遇到过,当初我是重打开文件来做的,这样浪费资源非常严重,不值那位有更好的办法??
hefeng 2000-07-25
  • 打赏
  • 举报
回复
CFile::modeRead and CFile::shareDenyNone
"and"是何意思?
panyan 2000-07-25
  • 打赏
  • 举报
回复
vc 的问题为什么要投到Basic栏。是不是我的问题太简单了?如果您知道答案,请指教!

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧