Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Помогите с paramstr


Автор: Sniper 8.5.2002, 21:05
Вот допустим такой параметр yyyy.exe -ggggg
Так вот как мне запустить прогу с введённым параметром...???
И ещё как поступить если параметров несколько...???
Где-то слышал, что надо paramcount вроде бы использовать!!!!!!

Автор: Vit 8.5.2002, 21:18
Paramcount - показывает сколько у тебя параметров передано
Paramstr(0) - это имя с путем твоей программы
Paramstr(1) - имя первого параметра
Paramstr(2) - имя второго параметра и т.д.

Если ты запускаешь:

с:\myprog.exe /a -b22 c:\dev

то Paramcount будет равен 3
Paramstr(0) будет равен с:\myprog.exe
Paramstr(1) будет равен /a
Paramstr(2) будет равен -b22
Paramstr(3) будет равен c:\dev

Автор: Baa 8.5.2002, 21:24
Наверно ты про это...Массив Params заполняеться параметрами, с которыми была вызвана программа...Код написан теоретически :) т.е. не проверял, но подиее он просто до невозможности, посему думаю, что будет работать :)
var
 Params : array [0..$FF] of String;
 I          : Byte;
begin
 for I := 0 to ParamCount do
   Params [I] := ParamStr(I);

Автор: Sniper 8.5.2002, 22:15
Хорошо, а как тогда запустить прогу с параметрами...

Как я понял что-то надо написать здесь??

program Project2;

uses
 Forms,
 Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
 Application.Initialize;

 Application.CreateForm(TForm1, Form1);

 Application.Run;
end.

Как мне допустим запустить например: qqq.exe -b22 ?????

Автор: TwoK 8.5.2002, 22:48
Хм, ты имеешь в виду свою прогу, которую ты создаешь? в меню "Run" есть "Parameters", там в комбобоксе прописываешь все параметры, которые душе угодно. Твоя прога будет запускаться с этими параметрами. Соответственно, когда эта строчка пустая, параметров командной строки не будет.

А если не свою, а чужую - тут тебе помогут CreateProcess, WinExec, ShellExecute, ...

Удачи.

Автор: Sniper 8.5.2002, 23:33
Вот допустим Counter-Strike запускается так
hl.exe -console -game cstrike
можно так hl.exe - console

Короче, что бы пользователь их мог вводить!

Автор: Vit 8.5.2002, 23:44
ShellExecute(Handle, 'Open', YourProgramName, yourparameters, yourprogrampath, sw_restore)

Например для твоего случая:
ShellExecute(Handle, 'Open', 'hl.exe', '-console -game cstrike', 'c:\games\contrstrike', sw_restore);


Автор: Sniper 9.5.2002, 00:01
А как пользователь их будет вводить?

Автор: TwoK 9.5.2002, 00:10
Хм, ну, наверное, с клавиатуры...

Sorry, но вопрос "как" ставит в тупик :D

Автор: Sniper 9.5.2002, 00:16
Цитата(TwoK @ 09.5.2002, 01:10)
Хм, ну, наверное, с клавиатуры...

Sorry, но вопрос "как" ставит в тупик :D

Не.... ну если в обработчике "баттны" написать сею строчку... то запустится CS с параметрами -console -game cstrike.......
но я ведь пишу свою прогу!!!!!

Автор: TwoK 9.5.2002, 00:25
То есть ты хочешь запустить _ту программу, которую ты пишешь_, с параметрами, которые введет пользователь?

Так создай ему ярлык и пусть балуется
Или напиши прогу №2, там вводи этот текст и шеллекзекуть свою первую прогу


Или если нет, то на 3 сообщения выше

"в меню "Run" есть "Parameters", там в комбобоксе прописываешь все параметры, которые душе угодно. Твоя прога будет запускаться с этими параметрами. Соответственно, когда эта строчка пустая, параметров командной строки не будет."


Описал бы нормально: я пишу программу "е-мое". Она должна взять у пользователя параметры командной строки и запустить"... ну и в таком же духе далее. А не "если-если".

Автор: Vit 9.5.2002, 00:55
Ставишь на форму TEdit и кнопку. На обработчике нажатия кнопки пишешь:

ShellExecute(Handle, 'Open', 'hl.exe', PChar(Edit1.text), 'c:\games\contrstrike', sw_restore);

Автор: Sniper 9.5.2002, 18:49
Так... описываю по-нормальному!
Вот я пишу прогу :-)))
Создаю пользователю обычную иконку БЕЗ параметров.
Он [пользователь] параметры эти не знает... :-)))
Но потом я ему говорю эти параметры....
Он [пользователь] их вводит в иконке и прога запускается с ВВЕДЁННЫМИ параметрами ( пользователь может вводить только некоторые параметры!!!;)
Вопросы:
Как запустить прогу только с введёнными параметрами(которые прописаны в иконке)???

Так мой вопрос понятен???

Автор: Vit 9.5.2002, 19:51
Ты совсем запутал!
Если ты добавил параметры к иконке (я думаю что имеется ввиду shortcut) то конечно программа запустится именно с этими параметрами, ничего писать не надо. Короче чтO именно тебе надо - даю варианты ответа:

1) Запустить чужую программу из своей с параметрами? Используй - ShellExecute - пример я привел

2) Твою программу запустили с параметрами и в ответ на это ты должен сделать какие-то действия? Используй Paramstr, Paramcount

3) Твою программу запустили с параметрами и ты в свою очередь должен запустить чью-то программу с этими же параметрами - используй оба первых ответа вместе.

4) Тебе надо запустить какую-нибудь программу с параметрами из виндов - пишешь в окне Запуска ("Run") myprogram.exe /myparam

5) Тебе надо создать иконку (shortcut) для запуска программы с параметрами - посмотри FAQ на этом форуме - тема "Как создать Shortcut"

6) Тебе надо создать иконку (shortcut) для запуска программы с параметрами в ручную из Windows - там в свойствах иконки есть пункт параметры - вписываешь их туда

7) Узнать с какими параметрами кто-то запустил чужую программу? - это единственный вопрос на который я не знаю ответ.

Всё! Ты извини у меня не хватает фантазии придумать что-то еще, что бы можно сделать с параметрами! Пожалуйста - прочитай этот список и напиши какой пункт тебе надо реализовать.


Твой последнее сообщение отличается крайней непонятностью:

Цитата
Создаю пользователю обычную иконку БЕЗ параметров.


Имеется ввиду Shortcut или иконка в Listview, или иконка в Treeview или ты просто имеешь ввиду объект TIcon, или ты на Canvas эту иконку рисуешь? Что такое параметры иконки? Параметры бывают или у запускаемого приложения или в кверях, или это Shortcut, который пользователь запускает с параметрами?

Цитата
Он [пользователь] их вводит в иконке и прога запускается с ВВЕДЁННЫМИ параметрами ( пользователь может вводить только некоторые параметры!!!


Что значит ввести параметры в иконке? Нарисовать на ее Canvas'e? Или ты под иконкой подразумеваешь программу? Или напротив иконки нарисованной на форме у тебя есть Edit Box? Или твоя программа рисует только иконку и ловит сообщения клавиатуры прямо в него?

Цитата
Как запустить прогу только с введёнными параметрами(которые прописаны в иконке)???


Запуск проги осуществляется через ShellExecute, а по поводу иконки в которую что-то введено - это напоминает мне "кубический трёхчлен" - умозрительно представить себе это я не могу!

Давай ты еще раз напишешь сообщение, используя стандартную терминологию:

Иконка - квадратное изображение 16х16 или 32х32
Shortcut - ярлык, программа с расширением lnk, pif

Автор: Sniper 9.5.2002, 20:29
Из всего представленного многообразия мне нужен пункт 2!!

Автор: Vit 9.5.2002, 20:35
Посмотри мой самый первый ответ в эту нему - там приводиться объяснение.

Например поставь форму, на нее кнопку, на нажатие кнопки напиши код:

showmessage(paramstr(1));

Откомпиллируй программу. Закрой Дельфи. Запусти свою программу с параметрами или из меню Run или создав ярлык с параметрами. Нажми кнопку, тебе выскочит окожко в котором будет показан первый параметер.

Автор: Sniper 9.5.2002, 21:32
А что надо написать в коде, что бы этот параметр ВЫПОЛНИЛСЯ!!!!?????

Что-то типа:

if paramstr(1) then
begin
........
end;

Так что-ли???

Автор: Vit 9.5.2002, 22:02
Что значит выполнился? Выполнить можно только комманду, а параметер это просто строка, набор букв, выполнить ее нельзя - ты можешь только проверить на наличие строки и если она присутствует, то выполнить какое либо действие, это действие ты должен написать сам, никаких стандартных действий нет.

Например у тебя возможно 3 параметра:

Если параметер = "/v" то  выдать сообщение, если параметер "/c" то покрасить форму в синий цвет, если параметер "/f" - поменять заголовок формы:

Код

 if paramstr(1)='/v' then
   showmessage('Parameter "/v" was found!');
 if paramstr(1)='/c' then
   color:=clBlue;
 if paramstr(1)='/f' then
   caption:='Parameter "/f" was found';


Поставь этот код на событие формы onActivate, откомпиллируй и попробуй запустить программу с одним из 3х указанных параметров и ты увидишь что произойдет.

Автор: Sniper 10.5.2002, 21:50
Спасибо.... это мне и надо было!!!!!
(я наверное очень витеевато задал свой первый вопрос..... ;-))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)