Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2013, 08:36   #1
8tomat8
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 46
По умолчанию Разбор строки (Delphi)

Есть строка вида
Код:
(TCL_FIC_NMK_.FCOD LIKE '16%' and FOP_DATE  BETWEEN '20130101' AND '20131130')
 or (TCL_FIC_NMK_.FCOD LIKE '16%' and FOP_DATE  BETWEEN '20121001' AND '20121130')
 or (TCL_FIC_NMK_.FCOD LIKE '28%' and FOP_DATE  BETWEEN '20130401' AND '20130831')
 or (TCL_FIC_NMK_.FCOD LIKE '24500%' and FOP_DATE  BETWEEN '20130401' AND '20130831')
16%,28%,24500% - некие коды
~20131001 - даты
Хочу разобрать её на куски и поместить в таблицу вида


Как это можно реализовать?
Попробовал через кучу pos. Никак не добьюсь нужного порядка действий(
И возможно ли заменить номера месяцев на слова?
8tomat8 вне форума Ответить с цитированием
Старый 10.11.2013, 10:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Есть строка вида
Какого вида?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2013, 13:53   #3
8tomat8
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Какого вида?
Я ж пример прикрепил
Цитата:
Сообщение от 8tomat8 Посмотреть сообщение
Есть строка вида
Код:
(TCL_FIC_NMK_.FCOD LIKE '16%' and FOP_DATE  BETWEEN '20130101' AND '20131130')
 or (TCL_FIC_NMK_.FCOD LIKE '16%' and FOP_DATE  BETWEEN '20121001' AND '20121130')
 or (TCL_FIC_NMK_.FCOD LIKE '28%' and FOP_DATE  BETWEEN '20130401' AND '20130831')
 or (TCL_FIC_NMK_.FCOD LIKE '24500%' and FOP_DATE  BETWEEN '20130401' AND '20130831')
8tomat8 вне форума Ответить с цитированием
Старый 10.11.2013, 14:22   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Код:
p := pos('LIKE', s) + 6;
a := copy(s, p, pos('%', s) - p);
p := pos('BETWEEN', s) + 9;
b := copy(s, p, pos(chr(39) + ' AND ' + chr(39), s) - p);
p := pos(chr(39) + ' AND ' + chr(39), s) + 7;
c := copy(s, p, pos(chr(39) + ')', s) - p);
Применять к каждой строке (пример работы - http://ideone.com/0mvBSG).
И заменить числа на слова тоже возможно.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 10.11.2013 в 14:24.
BDA вне форума Ответить с цитированием
Старый 10.11.2013, 14:27   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я ж пример прикрепил
Ты парсишь SQL запросы???
Можно полюбопытствовать зачем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2013, 14:30   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

зачем кусок запроса парсить? ой скорее тут опять не в то место..
eval вне форума Ответить с цитированием
Старый 10.11.2013, 14:51   #7
8tomat8
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 46
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
p := pos('LIKE', s) + 6;
a := copy(s, p, pos('%', s) - p);
p := pos('BETWEEN', s) + 9;
b := copy(s, p, pos(chr(39) + ' AND ' + chr(39), s) - p);
p := pos(chr(39) + ' AND ' + chr(39), s) + 7;
c := copy(s, p, pos(chr(39) + ')', s) - p);
Применять к каждой строке (пример работы - http://ideone.com/0mvBSG).
И заменить числа на слова тоже возможно.
Спасибо. Сейчас циклов еще накручу и будет ок) Можно закрывать)
8tomat8 вне форума Ответить с цитированием
Старый 10.11.2013, 14:53   #8
8tomat8
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты парсишь SQL запросы???
Можно полюбопытствовать зачем?
Те кто строили нам базы, сделали такую систему установки прав для пользователей. К каждому их запросу добавляется эта строка. А я же теперь хочу что бы у них в меню появлялись в понятном для них виде права
8tomat8 вне форума Ответить с цитированием
Старый 10.11.2013, 15:13   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

права не с воздуха берутся, но это не про вас
eval вне форума Ответить с цитированием
Старый 10.11.2013, 15:18   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Э-э-э... Так! Стоп! Права временные выдаются на некий срок, верно?
И ты хочешь сделать что? - систему выдачи прав?
Что-то мне все равно не доходит зачем запрос разбирать...
Он что, динамически создается, и каждый раз набор условий разный?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбор строки Celestia Общие вопросы Delphi 3 07.11.2012 17:10
разбор строки djKeysi C# (си шарп) 18 18.08.2011 07:14
разбор строки D_e_n_n Помощь студентам 2 03.03.2011 15:22
Разбор строки DenisVoronov Помощь студентам 11 18.11.2010 11:18
Разбор строки... CodeExpert Помощь студентам 3 23.02.2010 18:16