6

我的程序通过单击带有与我的程序关联的扩展名的文件名,接受输入文件名作为命令行参数或拖放操作或资源管理器中的输入文件名。

命令行和拖放工作正常,但它在资源管理器中单击文件名,当单击的文件的文件路径中有空格时会导致问题,例如:

c:\temp\file one.txt
c:\my directory\filetwo.txt
c:\my directory\file three.txt

然后,ParamStr 函数返回给我:

ParamStr(1):  c:\temp\file
ParamStr(2):  one.txt
ParamStr(3):  c:\my
ParamStr(4):  directory\filetwo.txt
ParamStr(5):  c:\my
ParamStr(6):  directory\file
ParamStr(7):  three.txt

我怎样才能最好地将这些重新组合成我需要的三个文件名?

4

3 回答 3

8

可能是您的 shell 文件关联不包含“”对。

像这些打开的:

"C:\Program Files\WinRAR\WinRAR.exe" "%1"  

或使用 DDE 消息:

[open("%1")]
于 2010-08-31T02:34:11.173 回答
4

应引用包含空格的命令行参数,例如文件名。这使参数解析器意识到它应该将它们保持在一起。如果用户没有引用文件名,那就是操作员错误。

另一方面,如果拖放系统正在这样做,那么您的拖放库中有一个错误,您需要与创建它的人交谈。不过,我有点困惑,为什么拖放操作会与 ParamStr 混淆。这应该只由在调用程序时传递给程序的参数设置,而不是在它启动并运行时设置。也许我错过了什么?

于 2010-08-31T00:21:00.583 回答
2

我从这里使用 CmdLineHelper 单元。

于 2010-08-31T01:23:40.760 回答