Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
EvaPiks
0 / 0 / 1
Регистрация: 22.01.2017
Сообщений: 62
#1

Распарсить команду - Delphi

14.07.2018, 05:10. Просмотров 67. Ответов 5
Метки нет (Все метки)

Доброго.
Есть команда вида
Delphi
1
cCMD := 'comanda "param1" "param2" "param3"';
Таких параметров может быть 1, может быть хоть сколько. В а команд только одна.

То есть нужно что бы в переменную cCommand падала 'comanda', а в P[1], P[2], P[3]... падали параметры.
Параметры всегда закрыты двойными ковычками.

Как распарсить такое? Спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2018, 05:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Распарсить команду (Delphi):

Распарсить таблицу
Всем Доброго Дня! Столкнулся с проблемой. Есть таблица, в ней выводятся...

распарсить сторочку
1,3,3,0;14,3,1,0;40,4,1,0;53,4,2,0;66,4,2,0;79,4,3,0;2,2,2,0;15,2,2,0;41,2,1,0;5...

Распарсить JSON
Доброго времени суток! Помогите распарсить JSON: 1: { "access_token":...

Распарсить строку
Всем привет. Есть массив, состоящий из строк, удовлетворяющих маску...

Распарсить строку
Есть строка вида: 12.1.555 Как мне получить такие переменные: str1 = 12...

Распарсить json
Доброго дня, необходимо распарсить ...

5
D1973
Модератор
3268 / 2316 / 1160
Регистрация: 21.01.2014
Сообщений: 9,631
Записей в блоге: 3
Завершенные тесты: 1
14.07.2018, 05:45 #2
Лучший ответ Сообщение было отмечено EvaPiks как решение

Решение

Delphi
1
2
3
4
var L: TStringList;
...
L := TStringList.Create;
L.CommaText := cCMD;
Теперь сама команда может быть получена обращением к первой строке СтрингЛиста:
Delphi
1
cCommand := L.Strings[0];
В остальных строках этого списка будут храниться параметры, заводить кучу переменных или объявлять дополнительный массив совершенно не обязательно: достаточно обращаться к конкретному параметру по его индексу в списке
Delphi
1
2
3
4
L.Strings[1]
L.Strings[2]
...
L.Strings[L.Count - 1] //последний параметр в списке
1
EvaPiks
0 / 0 / 1
Регистрация: 22.01.2017
Сообщений: 62
14.07.2018, 12:55  [ТС] #3
Нет же, вы не поняли, в параметрах тоже могут быть пробелы.
То что вы порекомендовали это первое что пришло в голову.
А как сделать если в параметрах могут быть и спец символы, и проблелы, и разный язык и регистр.
Единственное на что нужно опираться, это на то что параметры всегда заковычены.
А команда не содержит спецсимволов и пробелов, цельное слово ангийской раскладкой.
0
D1973
Модератор
3268 / 2316 / 1160
Регистрация: 21.01.2014
Сообщений: 9,631
Записей в блоге: 3
Завершенные тесты: 1
14.07.2018, 13:10 #4
Цитата Сообщение от EvaPiks Посмотреть сообщение
в параметрах тоже могут быть пробелы.
Цитата Сообщение от EvaPiks Посмотреть сообщение
в параметрах могут быть и спец символы, и проблелы, и разный язык и регистр.
Цитата Сообщение от EvaPiks Посмотреть сообщение
вы не поняли
Да, действительно, никак не пойму: что не так?
0
Миниатюры
Распарсить команду  
EvaPiks
0 / 0 / 1
Регистрация: 22.01.2017
Сообщений: 62
14.07.2018, 13:55  [ТС] #5
Спасибо большее. Был плохо подкован по работе с TStringList.
Еще вопрос в догонку, а есть ли вообще разница по факту?
StrList[1] или StrList.Strings[1] ??
0
D1973
Модератор
3268 / 2316 / 1160
Регистрация: 21.01.2014
Сообщений: 9,631
Записей в блоге: 3
Завершенные тесты: 1
14.07.2018, 17:36 #6
Цитата Сообщение от EvaPiks Посмотреть сообщение
есть ли вообще разница по факту
В дельфи - нет, но я все таки использую всегда вариант № 2 - намного нагляднее, с каким-нибудь массивом не спутаешь... А если соберетесь что-то на C++ Builder сотворить - там первый вариант вообще не сработает, так что лучше сразу не привыкать...
1
14.07.2018, 17:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2018, 17:36
Привет! Вот еще темы с решениями:

Распарсить html блок
Добрый день! Нужно распарсить блоки с этого сайта в которых в заголовке есть...

Распарсить строку Regexpr
Ребят есть строка вида <p>Платье <strong>"Мускат"<br />цвет:</strong>...

Распарсить арифметическое выражение
допустим Имеется строка 2+234*X-2*3 как выделить из этой строки 234*X ? а...

Как распарсить JSON?
Всем привет,я в тупике(((( Имеем код Delphi 10 Var S: String; I:...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru