|
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
|
||||||
C++ Выполнение команд24.01.2014, 21:13. Показов 7472. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|