Как я могу обрабатывать параметры с пробелами в Delphi? - PullRequest
5 голосов
/ 31 августа 2010

Моя программа принимает имена входных файлов либо в качестве параметров командной строки, либо в операции перетаскивания, либо в Проводнике, щелкая имена файлов с расширением, связанным с моей программой.

Командная строка и перетаскивание работают нормально, но щелчок по именам файлов в Проводнике вызывает проблемы, когда в пути к файлам, по которым щелкнули, есть пробелы, например:

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

Как мне лучше всего восстановить их обратно в три имени файла, которые мне нужны?

Ответы [ 3 ]

8 голосов
/ 31 августа 2010

Это может быть ваша ассоциация файлов оболочки, которая не включает пару "".

Как эти для открытия:

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

или с сообщением DDE:

[open("%1")]
4 голосов
/ 31 августа 2010

Параметры командной строки с пробелами в них, такие как имена файлов, должны быть заключены в кавычки.Это позволяет парсеру понять, что он должен держать их вместе.Если пользователь не цитирует имя файла, это ошибка оператора.

Если система перетаскивания делает это, с другой стороны, в вашей библиотеке перетаскивания есть ошибкаи вам нужно поговорить с тем, кто его создал.Я немного сбит с толку тем, почему операции перетаскивания не работают с ParamStr.Это должно быть установлено только параметрами, передаваемыми в вашу программу в момент ее запуска, а не после ее запуска.Может я что-то упустил?

2 голосов
/ 31 августа 2010

Я использую модуль CmdLineHelper, от здесь .

...