Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/50: Рейтинг темы: голосов - 50, средняя оценка - 4.96
3 / 3 / 0
Регистрация: 10.04.2012
Сообщений: 11

Запуск формы через командную строку с параметрами

25.04.2012, 18:58. Показов 10395. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Знаю, что в консоли можно получить данные из командной строки
C
1
2
3
4
int main(int argc, char *argv[]) {
   // Инструкции
   return 0;
}
А как получить их для формы? где надо написать int argc, char *argv[] ?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.04.2012, 18:58
Ответы с готовыми решениями:

Запуск програмки через командную строку
Сразу говорю, что Builder'ом не дружу, и с с++ не очень, но писать надо, потому у меня несколько вопросов, надеюсь кто-нить поможет)) ...

Запуск через командную строку с параметрами
Помогите плиз!!! void main(int argc, char *argv) { int k,N; clrscr(); LIST *lst; FILE *fi,*fo; if (( fi =...

Запуск через командную строку
Имеется код: #include <stdio.h> int main(int argc,char *argv) { char *rezhim; printf("%s\n",argv); rezhim=argv; ...

11
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
25.04.2012, 19:24
какой формы? проект windows forms? если да то это .NET, там в св-вах проекта указывается
0
3 / 3 / 0
Регистрация: 10.04.2012
Сообщений: 11
25.04.2012, 19:35  [ТС]
не знаю как объяснить..
создан проект в C++ Builder : VCL Forms Application
получила файл Project1.exe
необходимо после ввода в командной строке Windows (cmd) : Project1.exe 1.txt
чтобы открылся Project1.exe и параметр "1.txt" передался в это приложение.

Вот как в проекте считать этот параметр в переменную? (допустим filename)
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
25.04.2012, 19:46
Цитата Сообщение от myosotis Посмотреть сообщение
int main(int argc, char *argv[]) {
* *// Инструкции
* *return 0;
}
Никогда не работал с формами, но обычно аргументы передаются в массиве argv[]
, а argc размер массива.
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
25.04.2012, 19:48
В билдере вам понадобится cpp-файл проекта (не формы, а проекта!). Там описана главная функция в следующем виде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
WINAPI _tWinMain(HINSTANCE,HINSTANCE,LPTSTR,int)
{
  try
  {
    Application->Initialize();
    //там дальше еще что-то
  }
  catch(Exception &exception)
  {
  //...
  }
  return 0;
}
Так вот за параметры командной строки отвечают третий и четвертый параметры. Третий - собственно параметры, четвертый - их количество. Назначьте им имена и работайте.
P.S. писал на память, так что проверяйте.
0
3 / 3 / 0
Регистрация: 10.04.2012
Сообщений: 11
25.04.2012, 20:04  [ТС]
Цитата Сообщение от HighPredator Посмотреть сообщение
В билдере вам понадобится cpp-файл проекта (не формы, а проекта!). Там описана главная функция в следующем виде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
WINAPI _tWinMain(HINSTANCE,HINSTANCE,LPTSTR,int)
{
  try
  {
    Application->Initialize();
    //там дальше еще что-то
  }
  catch(Exception &exception)
  {
  //...
  }
  return 0;
}
Так вот за параметры командной строки отвечают третий и четвертый параметры. Третий - собственно параметры, четвертый - их количество. Назначьте им имена и работайте.
P.S. писал на память, так что проверяйте.
а как назначить им имена?
попробовала так
C++
1
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR filename, int kol)
но он их не видит..
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
25.04.2012, 20:06
Цитата Сообщение от myosotis Посмотреть сообщение
но он их не видит
Они должны быть видны в рамках этой функции. И лучше их назвать argv и argc соответственно.
0
3 / 3 / 0
Регистрация: 10.04.2012
Сообщений: 11
25.04.2012, 20:21  [ТС]
Цитата Сообщение от HighPredator Посмотреть сообщение
Они должны быть видны в рамках этой функции. И лучше их назвать argv и argc соответственно.
так?
C++
1
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR *argv[], int argc)
я не понимаю, как эти переменные сделать видимыми для unit1.cpp ?

и еще.. вот нашла:
C++
1
2
3
4
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR     lpCmdLine,
                   int       nCmdShow)
Третий параметр lpCmdLine типа LPSTR (long pointer to string - указатель на строку) хранит аргументы командной строки.
Четвёртый параметр nCmdShow - набор флагов. Через этот параметр передаётся начальное состояние окна приложения.
Получается, что 4 параметр это не количество параметров командной строки..
1
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
25.04.2012, 20:56
Цитата Сообщение от myosotis Посмотреть сообщение
nCmdShow - набор флагов
Да. Что-то я маху дал..
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.04.2012, 22:22
Лучший ответ Сообщение было отмечено как решение

Решение

Достаточно:
C++
1
2
3
int c = ParamCount(); // Количество параметров
String ParamN1 = ParamStr(1); // Получить первый параметр
String ParamN2 = ParamStr(2); // Получить второй параметр
итд.
4
3 / 3 / 0
Регистрация: 10.04.2012
Сообщений: 11
26.04.2012, 00:56  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Достаточно:
C++
1
2
3
int c = ParamCount(); // Количество параметров
String ParamN1 = ParamStr(1); // Получить первый параметр
String ParamN2 = ParamStr(2); // Получить второй параметр
итд.
Огромное спасибо!!! это то что требовалось=) и очень просто
1
95 / 64 / 5
Регистрация: 03.07.2011
Сообщений: 148
26.04.2012, 15:19
Кстати, могу поделиться опытом - иногда перед запуском основного тела программы нужно изменить часть параметров для VCL компонентов на параметры, переданные из командной строки. Но например в функции OnCreate не все структуры еще созданы, в OnShow тоже не все возможно сделать. Я делаю так - на главную форму кладу таймер, по умолчанию выключенный, в событии его срабатывания прописываю все необходимые настройки. А включаю его в конце функции OnShow, таймаут ставлю секунду-две, в теле таймера выключаю его.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.04.2012, 15:19
Помогаю со студенческими работами здесь

Запуск через командную строку
Всем доброго времени суток. Изучаю java Герберт Шилдт 4 издание. Пытаюсь запустить java файл через командную строку который находится в...

Запуск через командную строку
Всем доброго времени суток. Пытаюсь освоить запуск программы с командной строки. Что делаю не так? Код программы: package out; ...

Запуск через командную строку
При запуске программы через командную строку возникает ошибка: Может быть, кто сталкивался

Запуск MySQL через командную строку
ставила MySQL вручную, ввожу в командной строке C:\"Program Files(x86)"\"MySQL"..и т.д.\bin , в ответ получаю the system cannot find the...

Запуск программы через командную строку
Проблема в следующем! Например написана программка сложения двух чисел, после её запуска в КС и ввода двух чисел программа выполняет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru