|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
||||||
C++ Выполнение команд24.01.2014, 21:13. Показов 7464. Ответов 23
Метки нет (Все метки)
Суть задачи вот в чем: программа должна выполнять команды, прописанные в файле или переменной.
Примерно так работает командная строка cmd: C:\Programms\Test>echo Текст Текст C:\Programms\Test> Тоже самое нужно создать в программе на C++. А именно :
Enter command: cout<<"Programm"; //Пишем cout Programm Конечно, кавычки в переменной недопустимы, поэтому я использую файл. А вообще нужно создать "компилятор" программ на C++: написал программу в файл, считал и выполнил каждую команду. Вопрос в том, как выполнить сами команды, и есть ли вообще такая возможность... Заранее спасибо
0
|
||||||
| 24.01.2014, 21:13 | |
|
Ответы с готовыми решениями:
23
C++ Builder 6 Выполнение в коде программы bat команд
|
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
||||
| 24.01.2014, 21:25 | ||||
|
и почему именно программа на c++ и именно своя, с нуля? Есть же скриптовые языки
0
|
||||
|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
|
| 24.01.2014, 21:34 [ТС] | |
|
0
|
|
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
|||
| 24.01.2014, 21:37 | |||
|
Если ты просишь помочь запрограммировать выполнение команд, то скажи, какие именно команды нужно выполнять. и
0
|
|||
|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
|||
| 24.01.2014, 21:47 [ТС] | |||
|
Добавлено через 2 минуты И для этого мне нужно иметь собственный язык программирования (с учетом тех задач, которые мне нужно выполнять)
0
|
|||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
||
| 24.01.2014, 21:49 | ||
|
если даже ты не знаешь, какие должны выполняться команды, то ты хочешь создать искусственный интеллект.
Добавлено через 1 минуту И собственный язык программирования... мне кажется ты слишком размахнулся
0
|
||
|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
||||
| 24.01.2014, 22:02 [ТС] | ||||
|
Добавлено через 5 минут Пример диалога: Копировать документы Задача "Копировать документы" не определена. Создать новую ? y Задача "Копировать документы": Copy(D:\Documents - E:\Documents) end Задача "Копировать документы" создана А дальше я могу либо написать уже приведенную команду Copy, либо написать: Копировать документы И вот теперь Manager превратит мою задачу в программу на C++ и выполнит ее. Добавлено через 1 минуту Вот зачем мне нужно выполнение команд из файла (Копировать документы.task) Добавлено через 2 минуты Добавлено через 2 минуты
0
|
||||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
|
| 24.01.2014, 22:07 | |
|
Прошу прощения за пессимизм, но вряд ли ты напишешь программу, которая будет превращать твою команду в программу с++ и выполнять её... А вот научить свою программу просто выполнять эти команды, на мой взгляд, вполне разрешимая задача.
Мне видится такой алгоритм разработки приложения: 1. Определить перечень команд, которые необходимо выполнять. Начать можно с одной, например та же самая "Copy" 2. Научит программу "понимать" эту команду. т. е. разбивать на составляющие - команда, параметры. И правильно её выполнять. 3. уже после этого можно добавить алгоритм создания "псевдонимов" для команд, которые будут где-то храниться.
0
|
|
|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
|
| 24.01.2014, 22:09 [ТС] | |
|
А все-таки, как выполнять команды?
Добавлено через 1 минуту Именно с этими 3 пунктами у меня проблем нет
0
|
|
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
||||||
| 24.01.2014, 22:31 | ||||||
|
как я говорил, нужно определиться с перечнем команд, тогда можно будет придумать синтаксис.
если предположить, что все команды имеют формат команда(параметр1 - параметр2) , то вот пример
Добавлено через 2 минуты Так же здесь можно добавить проверку на существование файла D:\Documents. Если в названии файлов могут использоваться символы, которые я принял за разделители - "(", " - ", ")", то следует ввести экранирование (стаффинг) для этих симолов Добавлено через 2 минуты а с третим пунктом действительно проблем нет. Если у тебя есть функция, способная выполнить "Copy(D:\Documents - E:\Documents)", то не составит труда найти в таблице с псевдонимами, что текст "Копировать документы" соответствует этой команде, а уж её выполнять мы умеем
0
|
||||||
|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
|||||||
| 24.01.2014, 22:41 [ТС] | |||||||
|
Это фрагмент компилятора
Добавлено через 1 минуту Добавлено через 5 минут в
Добавлено через 27 секунд ой простите не то написал
0
|
|||||||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
|||
| 24.01.2014, 22:42 | |||
Вот если ты в билдере нажмёшь Alt + F9, это да, компиляция
0
|
|||
|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
|||||||||||||
| 24.01.2014, 22:48 [ТС] | |||||||||||||
|
короче говоря, компилятор преобразует программу
Вопрос: как ее выполнить ? Добавлено через 2 минуты Добавлено через 35 секунд
0
|
|||||||||||||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
|||||||
| 24.01.2014, 23:01 | |||||||
|
Программа - пример, которую я привёл ничего не компилирует! Разберись в терминологии. Программа анализирует твою команду и тут же сама выполнят действие, которое ты ожидаешь.
если Programm - это текстовый файл, в котором записана команда, то есть функции OpenFile, LoadFromFile и др. Опять таки поиск выдаст вариантов множество, Добавлено через 6 минут
0
|
|||||||
|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
||||||||||||
| 24.01.2014, 23:03 [ТС] | ||||||||||||
|
Файл Programm содержит уже преобразованную на C++ программу:
То есть: Считать строку из файла Programm Эта строка - CopyFile(D:\Documents - E:\Documents); Выполнить ее Опять считать строку из файла Programm Это - cout<<"Завершено"; Выполнить И так далее, пока не будет достигнут конец файла. А вот как ВЫПОЛНИТЬ команду ? Добавлено через 1 минуту
0
|
||||||||||||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
|||||||||||||||
| 24.01.2014, 23:11 | |||||||||||||||
|
Если у тебя есть текстовый файл, в котором написано Добавлено через 5 минут CopyFile - булева функция, которая возвращает true при удачном выполнении и false, если выполнить команду не получилось. свою функцию execComand я тоже сделал булевой. В итоге она вернёт то же значение, что и вернула функция CopyFile . строку
0
|
|||||||||||||||
|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
||||||||
| 24.01.2014, 23:33 [ТС] | ||||||||
|
Добавлено через 9 минут К примеру, что бы выполнить команду cmd для очистки экрана, можно написать system("cls"); Прямо в программе. А вот как, например, скопировать файл такой же командой. Я имею в виду:
Вопрос в том, есть ли такой оператор, похожий на Run(); ?
0
|
||||||||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
||||
| 25.01.2014, 12:07 | ||||
|
0
|
||||
|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
||||
| 25.01.2014, 12:41 [ТС] | ||||
![]() Добавлено через 3 минуты Возможно, когда-то программа станет визуальной, и тогда bat будет безуспешно пытаться растянуть форму или скрыть кнопку ![]() Так что bat-файл не подходит Добавлено через 1 минуту Но я не знаком с VBScript. Это вроде что-то из Visual Basic? И как с такими "скриптами" работать? Добавлено через 3 минуты Насчет VBScript.. Программа должна преобразовать "задачу" в программу на VisualBasic и сохранить ее в файл *.vbs Правильно ли я понял? А потом она должна ее запустить. А как? Через ShellExecute? Добавлено через 18 минут Вообще, что должна делать моя программа? Вроде так: 1 Цикл (пока не обнаружен конец файла-eof) 2 Считать символ и добавить в Bufer. 3 Анализ содержимого переменной Bufer. 4 Если это какая-то команда, считывать дальше до получения символа конца строки. (Поясню-у команды такая структура:Человек пишет "Вывести Abc", и сразу при вводе программа добавляет в файл *.task строку "Вывести Abc"и символ конца строки) 5 Полученные параметры ("Abc") записать в Parameters 6 На основе названия команды и содержимого Parameters создать команду (VBScript) и записать ее в файл *.vbs 7 Конец цикла Теперь в файле *.vbs находится программа (на языке VBScript) И когда нужно будет выполнить файл *.task, запустить программу из файла *.vbs Все Я правильно все понял?
0
|
||||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
||||||
| 25.01.2014, 13:30 | ||||||
|
Вариант с VBScript подразумевает использование только VBScript, и не нужно писать никакой программы на C++. Я же привёл тебе уже работающий код программы, которая открывай файл, считывает команду из каждой строки и выполняет её. Сейчас она может выполнять только команду copy(что - куда). Нужны другие команды - добавь их обработку.
0
|
||||||
| 25.01.2014, 13:30 | |
|
Помогаю со студенческими работами здесь
20
Распознавание речи(+ команд) Выполнение консольных команд ОС Выполнение команд голосом
Выполнение команд Linux в Qt Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|