如何用TFileStream打开一个正在使用的文件。(100分)

  • 主题发起人 主题发起人 duckstar
  • 开始时间 开始时间
D

duckstar

Unregistered / Unconfirmed
GUEST, unregistred user!
用TFileStream创建一个文件流时,需要指名打开方式,但所有的打开方式对于正在使用的文件
则不可以。用WinRar时是可以打开正在使用的文件的,也就是说已经打开的文件也可以压缩,
那么如果使用TFileStream时该怎样操作才可以打开正在使用的文件呢?
 
那是不可能的! 如果别人正在使用那个文件,而且是以Exclusive方式打开的话
Windows是不会允许别的程序再访问那个文件的。
不信你试试下面的代码:
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FileStream: TFileStream;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
FreeAndNil(FileStream);
FileStream := TFileStream.Create(Edit1.Text, fmShareExclusive);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(FileStream);
end;

end.

当你打开一个文件后,其他程序是不可能再访问那个文件的。
 
那么WinRar是如何做到的?而且一些文本编辑器比如UltraEdit也可以打开Delphi正在编辑的文件,
这又是如何做到的呢?
 
这样吧我把意思再说明白一些。
用UltraEdit打开Delphi正在编辑的文件肯定是没有问题的。我现在就是要在我的程序中
用TFileStream打开Delphi正在编辑的文件。我试过,用UltraEdit打开的文件可以用FileStream
打开,而Delphi打开的文件,用FileStream打开就出错。
 
跟你的打开方式有关
如果是以fmShareExclusive打开的话
无论你用UltraEdit或WinRar都打不开的!
 
当然了,要是以独占方式打开的话无论怎样也是不行的。
关键是我要实现的功能已经在UltraEdit、WinRar中实现,我肯定不能控制打开方式,
我只是要实现类似 U & W 的功能。
 
难道就没有人知道了吗?是不是U & W 没有用FileStream啊?
 
谁说用TFileStream不能打开Delphi正在编辑的文件的? 我这里一切正常。
只要UltraEdit或WinRar能打开,用TFileStream也能打开
这会有什么问题?
不要搞到后来你都不知道自己在问什么了。[:D]
 
我明白了,是RX控件的事,谢谢xianjun,结束问题。
 
接受答案了.
 
后退
顶部