Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить параметры... [D7, WinXP]


Franzy ©   (2008-03-27 23:28:00) 

...с которыми вызывается консольное приложение Delphi?

Пишу мини прогу, которую будут вызывать из другой проги с неким набором параметров (в командной строке). Нужно получать и обрабатывать эти параметры в теле программы. Программа, повторюсь, консольная.

Помню, что раньше я умел это делать, но сейчас уже давно забыл :)


Leonid Troyanovsky   (2008-03-29 11:59:00) [1]


> Palladin ©   (28.03.08 12:17) [12]

>  у меня получилось передать не больше 32Кб...

А чего экспериментировать, в msdn сказано

The maximum length of this string is 32,768 characters, including the Unicode terminating null character.

Правда, там почему-то не указано, что размер каждого передаваемого
параметра ограничен MAX_PATH, а не только the module name portion of lpCommandLine.

--
Regards, LVT.


clickmaker   (2008-03-28 12:18:00) [2]


> я как то экспериментировал в обед, от делать нечего

как это в обед делать нечего? а обедать? ))


Palladin   (2008-03-28 12:17:00) [3]

а фз, что там используется, я как то экспериментировал в обед, от делать нечего, у меня получилось передать не больше 32Кб...

WinXP, SP2

на других не пробовал...


Riply   (2008-03-28 12:13:00) [4]

>  [10] Palladin ©   (28.03.08 12:07)
> это в консоли ограничение, а при CreateProcess - гораздо больше можно передать :)

Нет под рукой Delphi - не посмотреть NtCreateProcess.
Если там UNICODE_STRING используется, то всяко не больше чем MAXWORD div 2 символов :)


Palladin   (2008-03-28 12:07:00) [5]


> han_malign ©   (28.03.08 11:53) [9]

это в консоли ограничение, а при CreateProcess - гораздо больше можно передать :)


han_malign   (2008-03-28 11:53:00) [6]


> А остальные пусть допишут остальные...

- угу, их там еще на пару тысяч наберется(если односимвольные и не уникальные), учитывая ограничение длинны коммандной строки в 4К(кажется)...


Kolan   (2008-03-28 11:38:00) [7]

> А остальные пусть допишут остальные…

Это как на парте пишут: «если ты не голбой нарисуй вагон другой».


Семеныч   (2008-03-28 10:59:00) [8]

> Palladin ©   (28.03.08 09:54) [6]

> а седьмой и восьмой?
ParamStr(7) - седьмой параметр
ParamStr(8) - восьмой параметр

> а как же все остальные?
А остальные пусть допишут остальные...


Palladin   (2008-03-28 09:54:00) [9]

а седьмой и восьмой? а как же все остальные?


DrPass   (2008-03-28 09:52:00) [10]


> Xandr   (28.03.08 08:27) [4]
> ParamStr(0) - путь к программе
> ParamStr(1) - первый параметр
> ParamStr(2) - второй параметр

Надо бы еще уточнить, что
ParamStr(3) - третий параметр
ParamStr(4) - четвертый параметр
ParamStr(5) - пятый параметр
ParamStr(6) - шестой параметр


Xandr   (2008-03-28 08:27:00) [11]

ParamStr(0) - путь к программе
ParamStr(1) - первый параметр
ParamStr(2) - второй параметр
итд
насколько я помню, параметры разделяются пробелами.

использовать:
var
s:String;
begin
s:=ParamStr(1);
end;

ParamCount - количество параметров, с которыми вызвана прога.


Семеныч   (2008-03-28 00:35:00) [12]

> Franzy   (27.03.08 23:28)

ParamStr, ParamCount.
Консольная или нет - неважно.


Efir   (2008-03-28 00:28:00) [13]

ParamStr?


Плохиш   (2008-03-28 00:00:00) [14]


> Помню, что раньше я умел это делать, но сейчас уже давно
> забыл

Да, да, "не знал, не знал и забыл"

PS. Справку почитай и ещё много полезного узнаешь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо