Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
11 / 2 / 1
Регистрация: 18.08.2012
Сообщений: 96

Консольное приложение

29.01.2026, 10:24. Показов 1854. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Имеется программа в виде консольного приложения. Настройки программы прописаны в текстовом файле, в виде цифр в одной строке! (прикладываю файл, параметры это только первая строка). Прошу подсказать возможно ли сделать так, чтобы при запуске программы в консоли отображалось похожее меню? Примерно может как в старом коммандере, где был колонки разные. Последовательный ввод параметров можно сделать, но крайне неудобно в пользовательском плане.
Программированием почти не занимаюсь, поэтому даже не знаю как правильно называются такие вещи, прошу извинить. Если буду знать направление где искать, то дальше уже сам сделаю. Программа очень простая, формы нет и не хотелось бы ее городить. Спасибо
Вложения
Тип файла: txt settings.txt (1.7 Кб, 29 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2026, 10:24
Ответы с готовыми решениями:

Граф. приложение+библиотеки+консольное приложение! Не работает программа без использования консоли. Если использую, то всё прекрасно работает.
Ребята нужна помощь,все вроде сделал, но приложение начинает зависать при запуске без использования...

Консольное приложение
Вот составила консоль-приложение,но при "Run" пишет мне отказано в доступе,в чем может быть...

Консольное приложение в среде Delphi
Здравствуйте! При реализации консольного приложения в среде Delphi возник следующий вопрос: -...

28
11 / 2 / 1
Регистрация: 18.08.2012
Сообщений: 96
30.01.2026, 10:27  [ТС]
Студворк — интернет-сервис помощи студентам
Rayvenor, спасибо. Очень признателен! Для меня особенно важно, что Вы расписали все параметры, все условия, обработку ошибок, возможность расширения. А то делаешь сам впрямую, "по-деревянному", так что права на ошибку при использовании не будет.
0
 Аватар для volodin661
6809 / 2307 / 350
Регистрация: 10.12.2013
Сообщений: 7,953
30.01.2026, 11:52
Цитата Сообщение от Roman1 Посмотреть сообщение
можно ли сделать так, что при запуске экзешника в этом черном окне консоли появлялся, как сказали, некий текстовый навигатор по этим пяти или шести параметрам????
чорное-чорное окно консоли с возможностью ввода команд и в том числе запуска и управления чем угодно
называется в OS Windows Powershell.

Powershell входит в состав Windows с 2009г (Windows 7), Верёвкину было тогда 30 лет и он вполне мог бы об этом знать, если бы не пил столько коньяка.

Вот так выглядит смешное Пользовательское меню



PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Function Global:A {
    nanocad -a 1 2 3 4 
 } 
Function Global:B {
 
    c:\Users\User\projects\generator\util1 
    c:\Users\User\projects\generator\util2
    c:\Users\User\projects\generator\util3
 } 
Function Global:C {
 
    nvim c:\Users\User\projects\generator\config.ini
 } 
Function Global:D {
 
    del c:\Users\User\projects\generator\*.tmp
 } 
Function Global:E {
 
    Start-Process 'https://weather.com/en-GB/weather/today/l/55.75,37.58?par=apple_TWC&locale=en_RU&units=m'
 } 
Function Global:Q {
 
    Function Global:Prompt {"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "; }
    foreach ( $function in "A","B","C","D","E","Q") {
        remove-item function:$function    
    }
} 
 
Function Global:Prompt {
@"
Каталог: $(Get-Location)
 
 
    A. Запуск NanoCAD с параметрами
    B. Запуск служенбых утилит
    C. Редактирование файла настроек
    D. Удаление временных файлов
    E. Посмотреть прогноз погоды
    Q. Выход из данного меню
 
 
 
Введите букву меню >
"@
}
Почему оно смешное? Потому что это просто видоизменённый 'prompt' - строка-приглашение для пользовательского ввода в текущей интерактивной сессии powershell.

Таким образом, пользователь может вводить то, что ему заблагорассудится, но у него перед глазами всегда торчит меню с подсказками
и если он введет A и нажмет на <Enter>, исполнится функция А, если B<Enter>, то функция B итд.
Если Q<Enter>, то подсказка просто примет привычный вид - меню перед глазами исчезнет. Удалятся из сессии и функции
A(),B(),C(),D(),E(),Q().

Итак, назвав скрипт, показанный выше, usermenu.ps1 и определив там желаемые функции с желаемым именем,
пользователь запускает его в текущей сессии вот так
PowerShell
1
.\usermenu.ps1
и получает перед глазами и меню, и возможность как обычно работать в консольной ком.строке.

PS: powershell не различает регистр операторов, служебных слов и переменных, поэтому беспокоится о том, вводить А или а или С или с не надо.
0
11 / 2 / 1
Регистрация: 18.08.2012
Сообщений: 96
30.01.2026, 12:20  [ТС]
Приветствую. Рад, что получаю нормальные ответы, наверно не совсем ерунду спросил, т.к., повторюсь, программирую почти ничего.
Исходя и уведенного и исходя из предполагаемой возможности реализации, и сложности, хотел попросить еще разъяснить возможность следующего.
Было бы неплохо, если бы при запуске консольного приложения сначала появлялся текст, содержащий список параметров. А ниже, под текстом появлялось бы приглашение ввести новые параметры. И после курсора подставлялась бы готовая строка. Нашлась даже похожая ветка с подстановкой строки в консоль послать текст в консольное приложение

Это было бы идеально. Запускаешь приложение, появляется список параметров, под ним готовая строка как-бы действующих параметров, ее можно отредактировать и нажать энтер. Примерно как в файле Макет (приложен).
Миниатюры
Консольное приложение  
0
 Аватар для volodin661
6809 / 2307 / 350
Регистрация: 10.12.2013
Сообщений: 7,953
30.01.2026, 13:02
Roman1,

есть несколько возможностей:

1) Ты как разработчик собственного приложения всё делаешь сам -
сам у себя спрашиваешь, сам себе и и отвечаешь, но уже в качестве пользователя.

2) при запуске своего консольного из-под командной оболочки ( powershell, bash, cmd )
последняя предлагает тебе возможность передать параметры в строке запуска приложения

PowerShell
1
myprog -длина 20 -высота 50 -количество 100
Языковые средства твоего приложения ( в данном случае это Delphi ) позволяют извлечь данные параметры в runtime
и использовать их по твоему усмотрению

3) То же, что и (2), но об'емные параметры ( например 10 000 значений ) есть возможность передавать программно по 'трубе' либо из оболочки, либо из любого другого консольного приложения.

Добавлено через 9 минут
PS: 'Труба' - программная парадигма, определяющая для консольного приложения поток для стандартного ввода,
поток стандартного вывода, поток стандартного вывода ошибок.

Любое консольное приложение после сборки обладает возможностью читать из стандартного ввода и писать в стандартный вывод.

Синтаксически из-под ком. оболочки это может выглядеть так:

PowerShell
1
myprog1 | myprog2  > file.log
Программа myprog пишет в свой стандартный вывод, а программа myprog2 принимает данные со своего стандартного ввода и отправляет их на свой стандартный вывод, который присоединён к файлу file.log

Добавлено через 3 минуты
присоединение входных и выходных труб друг к другу - это задача командной оболочки.

Добавлено через 3 минуты
Трубопроводными возможностями обладают только консольные программы,
'окошечные' программы так 'не умеют'.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
30.01.2026, 13:53
Цитата Сообщение от volodin661 Посмотреть сообщение
Верёвкину было тогда 30 лет и он вполне мог бы об этом знать, если бы не пил столько коньяка.
Ты чо до меня доколебался?
0
 Аватар для volodin661
6809 / 2307 / 350
Регистрация: 10.12.2013
Сообщений: 7,953
30.01.2026, 14:24
наказания без вины не бывает, Шарапов.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
30.01.2026, 15:55
Цитата Сообщение от volodin661 Посмотреть сообщение
наказания без вины не бывает, Шарапов.
Добро пожаловать в игнор, Глеб Егорыч.
0
61 / 51 / 25
Регистрация: 17.12.2013
Сообщений: 258
26.02.2026, 05:53
ИМХО, товарищь Володин выдал лучший ответ. Есть консольное приложение, умеет читать конфигфайл, умеет читать параметры командной строки. Для управления приложением этого достаточно. Можно наклепать батфайлов с разными параметрами. Можно прикрутить параметр командной строки с указанием конфигфайла и наклепать кучу конфигов. Вариантов масса. Гибкость чудесная. Зачем лепить текстовый редактор в консоли? Если именно это нужно - переделайте все приложение на окна. Так будет проще.
0
 Аватар для volodin661
6809 / 2307 / 350
Регистрация: 10.12.2013
Сообщений: 7,953
26.02.2026, 18:05
Цитата Сообщение от KMSNasgool Посмотреть сообщение
ИМХО, товарищь Володин выдал лучший ответ
согласенъ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.02.2026, 18:05
Помогаю со студенческими работами здесь

Консольное приложение
Делаю курсовую!!! Создаю проект в делфи!!! У меня возникла сложность: как соединить проект в делфи...

Нужно создать консольное приложение
1. Создать приложение, предлагающее пользователю ввести строку текста, затем подсчитывает число ...

Не могу закрыть консольное приложение из Delphi
Запускаю cmd.exe winexec(Pchar('cmd.exe'),sw_Show); Пытаюсь его закрыть, но ничего не...

Консольное приложение, описывающее ф-цию нахождения ср.арифм. отр.чисел. Исправление ошибок
type ssilka = ^ integer; vector = array of ssilka; Считая, что все элементы вектора Х отличны от...

Можно ли создать консольное приложение и управлять им с помощью кнопок на форме?
У меня такой вопрос: Можно создать консольное приложение и управлять им с помощю кнопок на форме?


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru