救我, 问题或许不难, 但对我来说却是至命的!!在线等待(共一百三十分,还有一贴分算这个的)!(50分)

  • 主题发起人 主题发起人 孤风秋叶
  • 开始时间 开始时间

孤风秋叶

Unregistered / Unconfirmed
GUEST, unregistred user!
现在通过注册表已经把某些文件和我的程序关联了起来,在鼠标右键里添加了程序的快捷菜单。并且通过PARAMSTR函数把文件调入到了程序中。问题是, 如果用鼠标选中的是多个文件, 那该用什么 函数 同时把多个文件调入到程序中呢!!(能同时调入到列表框中即可)!!
 
OpenDialog不是只能打开一个文件吗?
 
设置一下属性可以打开多个的, 不过我提得这个问题和opendialog没有什么关系的呀!
 
你程序不是有参数的嘛?
 
把你的程序贴出来,或许可以讨论清楚的,把选中文件读取到一个文件列表中,然后就是你程序控制的问题了!
 
用什么函数可以判断,鼠标选中了多少个文件,文件的文件名分别是什么!前提是程序还并末启动。就像WINRAR一样吧, 当你用鼠标选中了多个文件以后,点击右键中的压缩他会把选中的所有文件压缩成一个文件。 它是如何判断鼠标选中了多少个文件的呢!!
 
通过ParamCount可以得到参数的数目,使用方法如下所示:

procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin

for i:=1 to ParamCountdo

begin

Caption := Caption + '-' + ParamStr(i);
end;

end;

 
非常简单,
函数function ParamCount: Integer;可让你知道选择了多少个文件(ParamCount-1个文件)同时函数function ParamStr(Index: Integer): string;可以让你得到选择文件的
文件名 ParamStr(0)返回你的可执行文件名(即Application.ExeName,ParamStr(1)返回
选择的第一个文件,依次类推。
其实很多东西是操作系统完成的。比如说,你选择了很多文件,并点击右键菜单,操作系统则负责打开你的关联程序,并把所选择的文件作为参数传给你,你就可是通过上述的两个函数来处理。如果还有什么问题可以 Email:NeutronBoy@sohu.com
 
可是我曾试过这些代码的,我是这样写的。
procedure TForm1.FormShow(Sender: TObject);
var i:integer;
begin


if ParamCount>0 then

begin

for i:=1 to ParamCountdo

begin

Memo1.Lines.Add(ParamStr(i) );
end;

end;

end;

可是当选中多个文件时,却是只显示第一个文件呀,错误出在什么地方呢?? 还是在别得什么地方还有什么设置??
 
刚才我又加上了一句代码。
procedure TForm1.FormShow(Sender: TObject);
var i:integer;
begin


if ParamCount>0 then

showmessage(inttosrt(paramcount));
begin

for i:=1 to ParamCountdo

begin

Memo1.Lines.Add(ParamStr(i) );
end;

end;

end;

执行时, showmessge显示的是1 而我选中的却是四个文件,是不是我在什么地方写错了,还是在注册表中有什么地方末曾设置呢!!
 
哦,这里还有一贴啊,其实这个问题不是程序中的ParamStr(i)取不到,而是操作系统给你的程序只传了一个文件名,也就是一个实例传一个文件名,如果你选中10个文件,就会启动10个程序实例,每个实例得到一个文件名。我在那个贴子的方法可以解决这个问题,我试过了
 
to 迷糊:
不知道你是否有电子邮件?这两贴的分当然全部都归你了。
我还有最后一个问题想请教你。我选择的是音频类的文件和我的程序相关联。 如果只选中一个文件时,用我的程序打开的,如果选中多个时,第一个用我的程序打开, 而后面的几个却用别得播放软件打开了(如WINAMP)。谢谢迷糊,坦白说对你真有些感激和崇拜!!
 
怎么解决的,可以在这里再贴一下吗?
 
接受答案了.
 
后退
顶部