当拷贝的目标文件是被别的程序共享打开时,怎样拷贝它? (50分)

  • 主题发起人 主题发起人 bobo158
  • 开始时间 开始时间
B

bobo158

Unregistered / Unconfirmed
GUEST, unregistred user!
例:在NOVELL网络环境下,在A工作站用FOXPRO共享打开AA。DBF(SET EXCL OFF),在B工作站怎样COPY BB。DBF---》AA。DBF,
我试了,TFILESTREAM,LZCopy等方法都不行?
 
这个基本没有什么办法,不过如果你技术顶高
直接访问扇区。
 
操作系统作了限制,应用程序里面就别想了。。。
 
把 拷贝工作交给那个独占者去做 [:D]
 
高手快发话。我想这问题不算高难吧。
 
这个我想很简单嘛,既然目的数据库是共享打开,你也可以打开他然后打它记录全部删除,再把bb数据添加进去
 
to huddle:
对DBF数据当然可以这样做,如果是其他任意类型的文件呢? 所以还是应想一个通用的方法。
我多次试验,现在找到了一个方法:
procedure TForm1.Button1Click(Sender: TObject);
var
s,t:TfileStream;
buf:array[0..4096] of byte;
rn,wn:integer;
cgtime:tdatetime;
begin
s := TFileStream.Create(Edit1.Text, fmOpenRead or fmShareDenyWrite);
try
t := TFileStream.Create(edit2.text,fmOpenReadWrite or fmShareDenynone);// or fmShareDenyRead);
try
while (s.Position<>s.Size) do
begin
rn:= s.Read(buf,sizeof(buf));
while t.Write(buf,rn)<rn do
begin
t.Write(buf,rn);
end;
end;
finally
FreeAndNil(t);
end;
finally
FreeAndNil(s);
end;
end;
不过次法有一缺点,当源文件比目标文件小时,拷贝后的源文件并未变小。
欢迎各位踊跃发言,看还有没有更好的方法?
 
楼主是高手,恕某爱莫能助
 
多人接受答案了。
 
后退
顶部