| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > открыть прогу файлом. |
| Автор: gambit 18.12.2006, 19:54 |
| Может вопрос тупой но мне интересно. Когда перетаскиваем файл с исходником на компилятор, то запускается этот компилятор и компилирует именно тот исходник который на тнего перетащили. Я написал прогу, перетаскиваю на нее файл и она просто запускается. т.е. чистая без того файла. |
| Автор: Sartorius 18.12.2006, 19:58 |
| ииии |
| Автор: gambit 18.12.2006, 20:12 |
| Что иииии. Как реализовать то. |
| Автор: Sartorius 18.12.2006, 20:34 | ||
gambit, я ж те написал
|
| Автор: Snowy 18.12.2006, 20:36 |
| filename := ParamStr(1); |
| Автор: Alexeis 18.12.2006, 20:59 | ||
Неа не так. Вот так
p.s. Если путь к файлу содержит пробелы, то тогда строка разбивается на несколько фрагментов. |
| Автор: bems 18.12.2006, 21:06 | ||
|
| Автор: Sartorius 18.12.2006, 21:07 |
| bems, иногда в кавычки заключается. Тада не разбивается |
| Автор: Alexeis 18.12.2006, 21:19 |
Может и не правило, но мой вариант всегда прокатывает, а первый не всегда. Я сам наступил на эти грабли, так что говорю по своему опыту Добавлено @ 21:23 Не знаю как вы туда кавычки добавляете... это же система сама передает. Вот только что еще раз протесил. Все пути содержащие пробел делятся по пробелам. |
| Автор: Nicholas_S 18.12.2006, 21:45 |
| alexeis1, если передать в качестве параметра строку "c:\my dir\file name.txt", то пробелы не будут служить разделителями, поэтому можно использовать ParamStr(1). |
| Автор: VICTAR 18.12.2006, 22:05 |
| alexeis1, а если в командной строке несколько файлов, то какая же мешанина получится в filename?! |
| Автор: Snowy 18.12.2006, 22:11 | ||||
Если нужна вся коммандная строка целиком, то не нужно ничего склеивать:
Если файлов несколько, то
|
| Автор: VICTAR 18.12.2006, 22:24 |
| И все-таки, правильно делать так, как говорит Snowy, хотя иногда(очень редко) это не срабатывает... |
| Автор: bems 18.12.2006, 23:59 | ||
|
| Автор: Snowy 19.12.2006, 02:02 |
| Если это не сработает, значит коммандная строка составлена неправильно. Но в данном случае это исключено |
| Автор: VICTAR 19.12.2006, 07:15 |
| Хотя, если, программа открывает определенный тип файла(закрепленный за ней), то при регистрации своего расширения можно заключить параметр %1 в кавычки. Тогда уж точно не будет никаких проблем с пробелами. |
| Автор: Snowy 19.12.2006, 09:37 |
| Не нужно ничего заключать. Винда сама всё правильно сделает. Лишние кавычки только напортачут. ЗЫ. Насчёт нескольких файлов - это мы нагородили. Файл всегда один - в ParamStr(1), ну или не одного Если бросят несколько файлов, то запустится несколько экземпляров программы - по одному на каждый файл. |
| Автор: gambit 19.12.2006, 09:48 |
| А приятно когда вопрос так обсуждают. |
| Автор: VICTAR 19.12.2006, 11:19 | ||||
Не хочу никого обидеть, и все-таки:
Один раз мне помогли только кавычки, прога упорно не хотела открывать файл, и дело оказалось как раз в пробеле в пути к файлу.
Должен запуститься один экземпляр программы и все параметры передадутся в него соответсвенно в ParamStr(i). Это легко проверить, например загружая имя каждого файла в Memo. |
| Автор: Snowy 19.12.2006, 11:50 | ||||||
А, если по ассоциации, то только один. Добавлено @ 11:52 Код для проверки:
Компилим. Ярлык на ехе бросаем на стол. Переносим несколько файлов из Program Files или Моих Документов (или т.п.). |
| Автор: VICTAR 19.12.2006, 11:56 |
| Да, извиняюсь, погорячился. Я как раз и имел ввиду перетащить, а не открыть... |
| Автор: Alexeis 19.12.2006, 12:55 |
| Не понял, разве есть разница между тем чтобы кидать файлы на ярлык или на саму программу? Или речь идет о запуске при помощи меню правой кнопки т.е. через ассоциации. |
| Автор: Snowy 19.12.2006, 13:12 | ||||
В первом случае программа запускается и пути к файлам передаются ей в коммандной строке. Во втором случае программа должна реализовывать механизм Drag&Drop для принятия файлов.
Здесь вопрос о перетаскивании на ярлык программы. То есть самый простой из данных способов (по реализации разумеется). |
| Автор: Alexeis 19.12.2006, 13:19 |
| Блин неправильно сказал. Я имел ввиду другое есть ли разница перетащить файлы на экзешник или на ярлык к экзешнику. Вроде должно быть все равно. |
| Автор: Snowy 19.12.2006, 13:22 |
| Разумеется. В данном случае разницы нет. Просто обычно на рабочий стол бросают ярлыки |
| Автор: Alexeis 19.12.2006, 13:39 |
| Прикольно! 2000 винда запихивает весь путь в один параметр, а вот домашняя хрюшаСП2 разбивает путь к файлу по пробелам, в результате чего один файл может состоять из 3-х и более параметров! |
| Автор: Snowy 19.12.2006, 13:52 |
| У меня хомякSP2 - передаёт корректно. |
| Автор: Alexeis 19.12.2006, 14:12 |
Блин! Опять глюк делфей |
| Автор: bems 19.12.2006, 14:26 |
| это почему? |
| Автор: gambit 19.12.2006, 15:40 |
| Не знаю как у вас а у меня в ParamStr(1) все как надо. Добавлено @ 15:44 А когда кидаю 2 файла. открывается одна копия проги. Все супер спасибо всем. |
| Автор: Alexeis 19.12.2006, 15:52 |
А может и винды... Но все равно могли бы и учесть. |