Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2012, 17:44   #1
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию Чтение параметров запуска программы

У меня такая задача: нужно, чтобы если программа запущена с параметром -7day, выпоолнялся
Код:
ShowMessage('123');
иначе
Код:
ShowMessage('321');
Я пытался делать
Код:
if paramstr(1)='7day' then ShowMessage('123') else ShowMessage('321');
, предварительно ставив такие значения в Run/parameters


Но у меня всегда идет 123.

Что я делаю не так?

Последний раз редактировалось dr.Chas; 12.11.2012 в 15:42.
hon вне форума Ответить с цитированием
Старый 29.07.2012, 18:37   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

-7day
минус тоже является частью параметра (или что там перед 7)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.07.2012, 08:58   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Аватар абсолютно прав! +1

и я бы ещё в обязательном порядке добавил проверку:
Код:
if ParamCount>0 then
  if AnsiUpperCase(ParamStr(1))='-7DAY' then ....

UpperCase нужен, если регистр параметра не важен (т.е. может быть -7day и -7Day и -7DaY и т.д.)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.08.2012, 18:26   #4
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Аватар абсолютно прав! +1

и я бы ещё в обязательном порядке добавил проверку:
Код:
if ParamCount>0 then
  if AnsiUpperCase(ParamStr(1))='-7DAY' then ....

UpperCase нужен, если регистр параметра не важен (т.е. может быть -7day и -7Day и -7DaY и т.д.)
Не работает. При запуске с компилятора всегда считает, что параметр есть, при запуске командной строки считает, что нет. Не могли бы вы выложить пример.
hon вне форума Ответить с цитированием
Старый 02.08.2012, 23:52   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

рискну предположить, что Вы не там проверяете параметры приложения..

Цитата:
Не могли бы вы выложить пример.
Это не просто, а ОЧЕНЬ просто.

извольте - ParamExample.rar
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.08.2012, 00:25   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Вообще-то ParamStr даёт параметр "как есть", т.е. вместе с - и в том же регистре.

Поэтому, как минимум надо AnsiUpperCase(ParamStr(1)) = '-7DAY'.

Во-вторых, позиционированная проверка параметров - это плохо. Лучше искать нужный параметр по всем доступным.

В третьих, общепринятое соглашение в Windows - это /param или /param=value (param не чувствительно к регистру), а не -param или --param. И его бы лучше придерживаться, если нет иных соображений.

В-четвёртых, есть такая полезная функция как FindCmdLineSwitch.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тонкости CreateProcess и передаваемых процессу параметров запуска Человек_Борща Общие вопросы Delphi 9 09.01.2011 19:28
Чтение и запись параметров в xml BioHEX Общие вопросы Delphi 2 15.01.2010 04:16
Запись и чтение параметров изображения в текстовый файл Game1024 Общие вопросы .NET 1 14.01.2010 10:36
Чтение параметров из ini файла Яр|/||< (^_^) Общие вопросы Delphi 2 29.06.2009 20:54
Чтение параметров звука mp3 и mpc файлов DOOM514 Мультимедиа в Delphi 3 30.05.2009 10:53