Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> открыть прогу файлом. 
V
    Опции темы
gambit
Дата 18.12.2006, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Может вопрос тупой но мне интересно.
Когда перетаскиваем файл с исходником на компилятор, то запускается этот компилятор и компилирует именно тот исходник который на тнего перетащили.
Я написал прогу, перетаскиваю на нее файл и она просто запускается. т.е. чистая без того файла.
PM MAIL ICQ Skype   Вверх
Sartorius
Дата 18.12.2006, 19:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



ииии smile  Он просто в командной строке передается
PM MAIL ICQ   Вверх
gambit
Дата 18.12.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Что иииии. Как реализовать то.
PM MAIL ICQ Skype   Вверх
Sartorius
Дата 18.12.2006, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



gambit, я ж те написал 
Цитата

Он просто в командной строке передается 

PM MAIL ICQ   Вверх
Snowy
Дата 18.12.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



filename := ParamStr(1);
PM MAIL   Вверх
Alexeis
Дата 18.12.2006, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Snowy @  18.12.2006,  20:36 Найти цитируемый пост)
filename := ParamStr(1);

Неа не так.
Вот так smile
Код

for i := 1 to ParamCount 
do
  filename := filename + ParamStr(i) + ' ';


p.s. Если путь к файлу содержит пробелы, то тогда строка разбивается на несколько фрагментов.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bems
Дата 18.12.2006, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(alexeis1 @  18.12.2006,  20:59 Найти цитируемый пост)
Если путь к файлу содержит пробелы, то тогда строка разбивается на несколько фрагментов. 
не правило. но отчего зависит не знаю



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Sartorius
Дата 18.12.2006, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



bems, иногда в кавычки заключается. Тада не разбивается
PM MAIL ICQ   Вверх
Alexeis
Дата 18.12.2006, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(bems @  18.12.2006,  21:06 Найти цитируемый пост)
не правило

Может и не правило, но мой вариант всегда прокатывает, а первый не всегда. Я сам наступил на эти грабли, так что говорю по своему опыту  smile

Добавлено @ 21:23 
Не знаю как вы туда кавычки добавляете... это же система сама передает. Вот только что еще раз протесил. Все пути содержащие пробел делятся по пробелам.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Nicholas_S
Дата 18.12.2006, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



alexeis1, если передать в качестве параметра строку "c:\my dir\file name.txt", то пробелы не будут служить разделителями, поэтому можно использовать ParamStr(1).


--------------------
...все в мире относительно
PM   Вверх
VICTAR
Дата 18.12.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



alexeis1, а если в командной строке несколько файлов, то какая же мешанина получится в filename?!
PM MAIL   Вверх
Snowy
Дата 18.12.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Если нужна вся коммандная строка целиком, то не нужно ничего склеивать:
Код
  filename := GetCommandLine;
Но это не требуется - все параметры должны резаться.
Если файлов несколько, то
Код
var
  i:  integer;
begin
  for i := 1 to ParamCount do
    MyProc(ParamStr(i));
end;
и в MyProc нужно уже брать имя файла и делать с ним что нужно.
PM MAIL   Вверх
Alexeis
Дата 18.12.2006, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(VICTAR @  18.12.2006,  22:05 Найти цитируемый пост)
alexeis1, а если в командной строке несколько файлов, то какая же мешанина получится в filename?! 

Не уверен, скорее всего запустятся несколько экземпеляров приложения.

Цитата(Nicholas_S @  18.12.2006,  21:45 Найти цитируемый пост)
если передать в качестве параметра строку "c:\my dir\file name.txt", то пробелы не будут служить разделителями, поэтому можно использовать ParamStr(1). 

Ситуация несколько иная :
Цитата(gambit @  18.12.2006,  19:54 Найти цитируемый пост)
Я написал прогу, перетаскиваю на нее файл и она просто запускается. т.е. чистая без того файла. 




--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
VICTAR
Дата 18.12.2006, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



И все-таки, правильно делать так, как говорит Snowy, хотя иногда(очень редко) это не срабатывает... 
PM MAIL   Вверх
bems
Дата 18.12.2006, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(alexeis1 @  18.12.2006,  21:19 Найти цитируемый пост)
 это же система сама передает. Вот только что еще раз протесил. Все пути содержащие пробел делятся по пробелам. 
система вообще передает строку целиком. Отсюда и разные разделители у разных программ



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Snowy
Дата 19.12.2006, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(VICTAR @  18.12.2006,  22:24 Найти цитируемый пост)
отя иногда(очень редко) это не срабатывает... 
Если это не сработает, значит коммандная строка составлена неправильно.
Но в данном случае это исключено smile
PM MAIL   Вверх
VICTAR
Дата 19.12.2006, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



Хотя, если, программа открывает определенный тип файла(закрепленный за ней), то при регистрации своего расширения можно заключить параметр %1 в кавычки. Тогда уж точно не будет никаких проблем с пробелами.
PM MAIL   Вверх
Snowy
Дата 19.12.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Не нужно ничего заключать.
Винда сама всё правильно сделает.
Лишние кавычки только напортачут.

ЗЫ. Насчёт нескольких файлов - это мы нагородили.
Файл всегда один - в ParamStr(1), ну или не одного smile
Если бросят несколько файлов, то запустится несколько экземпляров программы - по одному на каждый файл.
PM MAIL   Вверх
gambit
Дата 19.12.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



А приятно когда вопрос так обсуждают.
PM MAIL ICQ Skype   Вверх
VICTAR
Дата 19.12.2006, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



Не хочу никого обидеть, и все-таки:
Цитата

Не нужно ничего заключать.
Винда сама всё правильно сделает.
Лишние кавычки только напортачут.

Один раз мне помогли только кавычки, прога упорно не хотела открывать файл, и дело оказалось как раз в пробеле в пути к файлу.
Цитата

ЗЫ. Насчёт нескольких файлов - это мы нагородили.
Файл всегда один - в ParamStr(1), ну или не одного 
Если бросят несколько файлов, то запустится несколько экземпляров программы - по одному на каждый файл. 

Должен запуститься один экземпляр программы и все параметры передадутся в него 
соответсвенно в ParamStr(i). Это легко проверить, например загружая имя каждого файла в Memo.

PM MAIL   Вверх
Snowy
Дата 19.12.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(VICTAR @  19.12.2006,  11:19 Найти цитируемый пост)
Один раз мне помогли только кавычки, прога упорно не хотела открывать файл, и дело оказалось как раз в пробеле в пути к файлу.
Сейчас проверил - нормально всё передаётся.

Цитата(VICTAR @  19.12.2006,  11:19 Найти цитируемый пост)
Должен запуститься один экземпляр программы и все параметры передадутся в него соответсвенно в ParamStr(i).
Это если бросить на ярлык.
А, если по ассоциации, то только один.

Добавлено @ 11:52 
Код для проверки:
Код

procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  with Memo1.Lines do begin
    Add('Params: ' + IntToStr(ParamCount));
    for i := 1 to ParamCount do Add(ParamStr(i));
  end;
end;
Бросаем на форму TMemo. Создаём у формы OnCreate.
Компилим.
Ярлык на ехе бросаем на стол.
Переносим несколько файлов из Program Files или Моих Документов (или т.п.).
PM MAIL   Вверх
VICTAR
Дата 19.12.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



Да, извиняюсь, погорячился. Я как раз и имел ввиду перетащить, а не открыть...
PM MAIL   Вверх
Alexeis
Дата 19.12.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Не понял, разве есть разница между тем чтобы кидать файлы на ярлык или на саму программу? Или речь идет о запуске при помощи меню правой кнопки т.е. через ассоциации. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 19.12.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(alexeis1 @  19.12.2006,  12:55 Найти цитируемый пост)
Не понял, разве есть разница между тем чтобы кидать файлы на ярлык или на саму программу?
Конечно есть.
В первом случае программа запускается и пути к файлам передаются ей в коммандной строке.
Во втором случае программа должна реализовывать механизм Drag&Drop для принятия файлов.

Цитата(alexeis1 @  19.12.2006,  12:55 Найти цитируемый пост)
Или речь идет о запуске при помощи меню правой кнопки т.е. через ассоциации. 
А ассоциации - третий способ smile
Здесь вопрос о перетаскивании на ярлык программы.
То есть самый простой из данных способов (по реализации разумеется).
PM MAIL   Вверх
Alexeis
Дата 19.12.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Блин неправильно сказал.  Я имел ввиду другое есть ли разница перетащить файлы на экзешник или на ярлык к экзешнику. Вроде должно быть все равно.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 19.12.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Разумеется. В данном случае разницы нет.
Просто обычно на рабочий стол бросают ярлыки smile
PM MAIL   Вверх
Alexeis
Дата 19.12.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Прикольно! 2000 винда запихивает весь путь в один параметр, а вот домашняя хрюшаСП2 разбивает путь к файлу по пробелам, в результате чего один файл может состоять из 3-х и более параметров!


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 19.12.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



У меня хомякSP2 - передаёт корректно.
PM MAIL   Вверх
Alexeis
Дата 19.12.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Snowy @  19.12.2006,  13:52 Найти цитируемый пост)
У меня хомякSP2 - передаёт корректно. 

Блин! Опять глюк делфей  smile 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bems
Дата 19.12.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(alexeis1 @  19.12.2006,  14:12 Найти цитируемый пост)
Блин! Опять глюк делфей
это почему?



--------------------
Обижено школьников: 8
PM MAIL   Вверх
gambit
Дата 19.12.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Не знаю как у вас а у меня в ParamStr(1) все как надо.

Добавлено @ 15:44 
А когда кидаю 2 файла. открывается одна копия проги. Все супер спасибо всем.
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 19.12.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(bems @  19.12.2006,  14:26 Найти цитируемый пост)
это почему?

А может и винды... Но все равно могли бы и учесть.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0786 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.