|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.06.2007, 14:36 | #1 |
Форумчанин
Регистрация: 24.01.2007
Сообщений: 323
|
paramstr
обясните ктото что такое paramstr
ато я знаю что 0 - это сама програма, а большэ ничего и незнаю Обясните как этим пользоватся, ПЛИЗЗЗ и ещё как запускать програму с параметром, например чтобы при запуске файла путь файла добавлялся в TListBox
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
|
07.06.2007, 14:51 | #2 | |
Участник клуба
Регистрация: 15.02.2007
Сообщений: 1,112
|
paramstr - это строка, которую набрал юзверь, чтобы запустить твою прогу.
Параметры в ней разделяются пробелами, во фрагментах, помещённых в ковычках, пробелы не учитываются. Например, допустим, твоя програ C:\prg.exe C:\prg.exe myfile.txt file2.cmd "D:\My photos\1.jpg" D:\temp\1.tmp Здесь paramstr(0)='C:\prg.exe' paramstr(1)='myfile.txt' paramstr(2)='file2.cmd' paramstr(3)='D:\My photos\1.jpg' paramstr(4)='D:\temp\1.tmp' Цитата:
if fileexists(paramstr(1))=true then listbox1.items.add(paramstr(1)); |
|
07.06.2007, 14:54 | #3 |
With best regards
Участник клуба
Регистрация: 20.04.2007
Сообщений: 1,448
|
Вот из справки:
/////////////////// 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 Параметер это просто строка, набор букв, выполнить ее нельзя - ты можешь только проверить на наличие строки и если она присутствует, то выполнить какое либо действие, это действие ты должен написать сам, никаких стандартных действий нет. Например у тебя возможно 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х указанных параметров и ты увидишь что произойдет. ////////////////////////////////////////////////
Life is too short, play more...
Как правильно задавать вопросы Последний раз редактировалось Alex21; 07.06.2007 в 14:58. |
07.06.2007, 15:37 | #4 |
Форумчанин
Регистрация: 24.01.2007
Сообщений: 323
|
WriteString('MyExt\Shell\First_Acti on\command','',
'C:\MyApp.Exe /LotsOfParamaters %1'); обясните мне это! при нажатии на строку контекстного меню, открывшыгося по нажатию на файл , этот файл (путь к ниму) добавлялся допустим в мою прогу C:\MyApp.Exe Зарание всем большое спасибо!
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
|
07.06.2007, 16:06 | #5 | |
Участник клуба
Регистрация: 15.02.2007
Сообщений: 1,112
|
что-то знакомое
Итак, здесь 'MyExt\Shell\First_Action\command' - ссылка на твой тип файл, объявленный в той же процедуре раньше
'C:\MyApp.Exe /LotsOfParamaters %1' - это то, что ты будешь запускать, а точнее 'C:\MyApp.Exe - путь к проге, /LotsOfParamaters - какие нибудь папаметры, чтобы определить, что именно нужно делать с файлом и %1 - непосредственно имя файла. Всю эту ботву можно упростить, например так: WriteString('MyExt\Shell\First_Acti on\command','', 'C:\MyApp.Exe open %1 '); Теперь в твоей проге при создании формы: if fileexists(paramstr(2))= true then if paramstr(1)= 'open' then ///ну дальше открываешь файл, имя которого передано в paramstr(2). Соответственно, если во втором действии написать не open а print - то печать. В общем эти команды ограничены только возможностями твоей проги и фантазией (разумеется в пределах необходимого). Вот реальный фрагмент кода для моего Спутника пользователя в этом примере регистрируется тип файлов zwl - списки обоев и действия по клику на таком файле, а также элементы контекстного меню для него: Цитата:
Path := ExtractFilePath(Application.Exename ) |
|
08.06.2007, 11:17 | #6 |
Форумчанин
Регистрация: 24.01.2007
Сообщений: 323
|
"C:\MyApp.Exe -o %1" - здесь можно вместо -о поставить любое слово?? например add
Fainder, а как зделать так чтобы система забыла вообще о том что ты асоцыировал своё розшэрение, иными словами как удалить ту асоцыацыю из реестра?
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
|
08.06.2007, 11:26 | #7 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Любое (ну тока тогда и в твоей программе должно другое быть, само собой).
Убрать ассоциацию - удали ключи, которые создал )
пыщь
|
08.06.2007, 11:31 | #8 |
Форумчанин
Регистрация: 24.01.2007
Сообщений: 323
|
"C:\MyApp.Exe open %1"
"C:\MyApp.Exe add %1" if FileExists(paramstr(2))=true then begin if paramstr(1)='open' then begin playlist.add(paramstr(2)); form1.Play.Click; end; if paramstr(1)='add' then playlist.add(paramstr(2)); end; когда выполнилось 'open' , а потом повторяя процэдуру с 'add' то открывается новая форма, а как зделать чтобы всё добавлялось в одну без создания новой формы
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
|
08.06.2007, 14:11 | #9 |
Участник клуба
Регистрация: 15.02.2007
Сообщений: 1,112
|
Вижу по предыдущему вопросу, разобрался без меня и это правильно, ведь ломать не строить, а удалить из реестра гораздо легче, чем туда поместить.
По поводу появления новой формы - она появлялась, появляется и появляться будет потому, что каждый раз, когда кликаешь на файл, приложение снова запускается в ещё одном экземпляре. Чтобы этого не происходило нужно(или): 1. Выхватывать наличие уже одного экземпляра приложения и произвести закрытие новой копии с передачей сообщения работающей 2. Связать с файлами не само приложение а другой экзешник и им регулировать передачу информации, хотя это по-ламерски Лучше первое выбирать! |
08.06.2007, 15:29 | #10 | |
Форумчанин
Регистрация: 24.01.2007
Сообщений: 323
|
Цитата:
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
|
|
|
Опции темы | Поиск в этой теме |