在资源管理器中拖动一个文件到一个程序(exe)文件上,等价于... ?(100分)

  • 主题发起人 主题发起人 liuge
  • 开始时间 开始时间
L

liuge

Unregistered / Unconfirmed
GUEST, unregistred user!
; 资源管理器中拖动一个文件到一个程序(exe)文件上,我一直认为就是带参
数地运行此程序,参数即拖动文件的文件名(含路径)。
可我才发现并非如此。
我在form的oncreate事件中,有如下语句:
assignfile(sfile,'w');
reset(sfile,1);
即打开文件名为w的文件。

可当我拖动任何一个文件到此程序上时我发现reset(sfile,1)执行后,就
会弹出一个对话框:file not found.

why?
 
>>assignfile(sfile,'w');
你这里W为什么是固定的? 你确信"W"文件存在吗? 并且在当前工作目录下?
 
把你处理参数的程序写出来看看。
 
"W"文件存在。
如果双击该程序运行,可打开该文件。我的程序在此文件上还有其他操作,都正确。
可拖动方式运行,此文件('w')不能打开。
 
DreamTiger,我打算处理参数,可现在根本就没有处理。
也就是我随便拖动了一个文件到我的程序图标上,我要打开'w'文件就出错了。
 
这是我的一个程序的Project Source,
根据ParamStr调用MainForm的OpenFile过程
打开一个文件。一切正常啊。

begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
if(ParamCount > 0) then
begin
for i := 1 to ParamCount do
begin
if(FileExists(ParamStr(i))) then
MainForm.OpenFile(ParamStr(i));
end;
end;
Application.Run;
end.
 
你把"W"文件的完整路径名加到assignfile参数里面.
 
DreamTiger,
1、请在form的oncreate事件中加如下语句:
assignfile(sfile,'w'); //'w'可为其他存在的文件
reset(sfile,1);
2、拖动其他文件到此程序图标上运行它。
 
OK,我试过了:
我是用assignfile(sfile,'e:/rjmime.pas');

1、如果拖动的文件不是'w',没问题,正常打开。
2、如果拖动的文件也是'w',出问题,但不是找不到,而是因为reset(sfile,1)把
文件锁定了,导致我的openfile中无法从文件中读取数据出错。

cAkk说的对,你的问题是没有使用全路径导致的。
 
cAkk说的我也试过了,reset(sfile,1)没问题。
可似乎还有些问题,我在证实一下。
用"w"文件名就有问题?待我试一下。
 
试过了,
我说的“似乎还有些问题”其实就是当前目录不是程序所在目录。是'c:/'
 
用ParamStr的时候,它传递的是全路径名,所以不会有问题的。
 
多人接受答案了。
 

Similar threads

后退
顶部