![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
JuryS1806 |
![]()
Сообщение
#1
|
![]() Студент ![]() Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
Так вот, уже год я занимаюсь написанием программы для рисования параметрических объектов. Сейчас активно создаю конзоль, которая будет анализировать команды.
http://depositfiles.com/files/9jq412vcg Вот что получилось на данный момент. Если у кого есть свободное время, можем объединить силы. Сейчас все акшоны и события переделываю под собственную консоль. такой командный интерпретатор получается. ![]() И работает здорово. К тому же я делаю команды не только на буржуйском языке, а также на отечественном, к примеру для того чтобы создать новый документ можно через меню Файл, Новый; или Ctrl+N; или ввести команду new; или ввести команду новый. Но самое важное теперь то, что эти команды и при использовании меню проходят через макроанализатор! Думаю еще через годик программа будет бомбой, по сравнению с FreeCad и QCad тем более Хочу спросить как можно на Qt например реализовать такую вещь: ввожу в QLineEdit строку содержания: линия 0 0 0 100 200 300 или на буржуйском языке line 0 0 0 100 200 300 Так вот, как можно анализировать такую команду, чтобы на выходе из QString было: QString Name = line int art1 = 0 int art2 = 0 int art3 = 0 int art4 = 100 int art5 = 200 int art6 = 300 Я понимаю что вопрос делетантский, но прошу помочь. К тому же думаю что не совсем актуально использовать сейчас goto. И путать исходный код макроанализатора. Спасибо за помощь. |
|
|
molchanoviv |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: ![]() ![]() ![]() |
с помощью QRegExp раздели строку. Ну или с помощью QString::split и первый элемент QStringList сделай Name а последующие art... Первый вариант предпочтительнее т.к. он отсеет неправильные строки, а во втором варианте придется еще и проверять.
Сообщение отредактировал molchanoviv - 11.11.2009, 19:40 |
|
|
JuryS1806 |
![]()
Сообщение
#3
|
![]() Студент ![]() Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
А я даже не думал что какие-то готовые классы для этого есть ! Я тут уже начал описывать в матрицу все символы русские, английские и цифры с пробелами !
Что ж, буду пробовать ! Если еще кто пожелает помочь в поисках буду признателен. И еще однозначно это будет круто по сравнению с использованием каких-нибудь python консолей, будет быстродейственно, с возможностью записи макросов, их загрузки, и т.д. |
|
|
JuryS1806 |
![]()
Сообщение
#4
|
![]() Студент ![]() Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
ВСЕМ ДОБРОГО ВРЕМЕНИ СУТОК ! вот что получилось у меня с анализатором команд, может кому пригодится. два дня тестировал, работает как часы.
Может быть у кого будут мысли по оптимизации такого кода. Он конечно колхозный, но очень четко работает ! Раскрывающийся текст
Теперь можно вводить команды: линия 1231 112 121 // то что будет в пояснении игнорируется line 123,123,123 // пробелы лишние стираются LiNe 120 123 124 // исправляется регистр букв ЛиниЯ 1231 1231 1231 // различие запятых и полностью рабочий русский язык ввода команд ВООБЩЕМ, мне лично нравится, буду рад критике Сообщение отредактировал Litkevich Yuriy - 15.11.2009, 7:15 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#5
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
JuryS1806, смотри тему Справка по кнопкам и тэгам форума
|
|
|
Kagami |
![]()
Сообщение
#6
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Ужас
![]() |
|
|
JuryS1806 |
![]()
Сообщение
#7
|
![]() Студент ![]() Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
![]() Я вообще считаю, что командная консоль должна быть в любом приложении. Например, в том же GIMP'e или Photoshop'e не всегда легко указать конкретную точку или область с мышки. Другое дело с консоли ввести команду с аргументами. Я не думаю, что программа должна работать только в текстовом режиме, НО и таковой должен быть. Я уже перестроил всю программму под свой макроанализатор. Любые события, слоты и акшоны работают через него, потому я и не хотел всяких неоднозначных выражений. все до безобразия просто. Заранее благодарен за помощь. |
|
|
JuryS1806 |
![]()
Сообщение
#8
|
![]() Студент ![]() Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
JuryS1806 |
![]()
Сообщение
#9
|
![]() Студент ![]() Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: ![]() ![]() ![]() |
Вот что получилось с использованием массивов ! Выкладываю свой MacroAnalize.cpp
MacroAnalize
Причина редактирования: плохо справку прочитал ;)
|
|
|
vanner |
![]()
Сообщение
#10
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 27.8.2009 Пользователь №: 1025 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Ты бы продумал архитектуру сначала, а потом писал. При таком подходе, как у тебя сейчас, добавление каждой новой команды будет превращаться в тяжелый труд.
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 2:27 |