|
#1
|
|||
|
|||
Работа со строкой
Подскажите как с запроса:
Select id_pib,list_pokar from kyrsova where name_pers = Иванов вывести в столбик компонента Memo такие записи - id_pib, list_pokar, name_pers. |
#2
|
||||
|
||||
FieldByName не?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
А по подробнее, можно?
|
#4
|
||||
|
||||
Код:
FieldByName('fieldname').asstring — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
Цитата:
В скобках надо указывать то что хочеш вывести. А надо чтобы автоматически удаляло select, from, where, = и то что идет после него. Если условий будет много то и and. |
#6
|
||||
|
||||
1) Берешь строку с запросом
2) Находишь в ней select 3) Находишь в ней From 4) Берешь из строки то, что между select и From 5) Разделяешь на подстроки - разделитель, запятая 6) Удаляешь лишние пробелы Полезные функции: 1) Pos - ищет подстроку в строке 2) MidStr - позволяет извлечь подстроку из строки 3) Если создать объект TStringList, и в его свойство CommaText записать строку, содержащую слова, разделенные запятой. То в этом TStringList будет список данных слов. 4) Функция Trim удаляет лишние пробелы Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров |
#7
|
||||
|
||||
madMonia, нафиг, пусть использует RegExp.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
madmax190 (25.04.2014)
|
#8
|
|||
|
|||
Спасибо помогло, а теперь как то что осталось загнать столбцом в Memo
|
#9
|
||||
|
||||
Цитата:
Код:
Memo1.Lines.Add('Строка'); |
#10
|
|||
|
|||
Автор, Вы уж определитесь, Вам надо текст запроса преобразовать в некие строки, или же результат выборки по данному запросу из базы выводить текстом ?
Выводить результаты выборки лучше в TDBGrid ну или на крайний случай в TStringGrid или TListBox (но для них надо будет использовать цикл обхода по "набору данных"). TMemo же практически не подходит для такой задачи. Если же нужно просто слова выделить из текста запроса, то можно использовать Copy Pos и т.п. но будет негибко (чуть поменяете текст запроса и всё может слететь), можно "использовать RegExp" © но для Вас будет сложновато и в принципе, тоже может быть негибко. Могу предложить обычный способ деления на слова с помощью TStringList: Код:
procedure WordDivider(SL: TStringList); var Text: string; begin Text := SL.Text; StringReplace(text, ' ', ' ', [rfReplaceAll]); // kill all double-space SL.Delimiter := ' '; SL.DelimitedText := Text; // divide all Text into words end; // вызов var SL: TStringList; ... SL := TStringList.Create; SL.Text := 'ваша строка с чем угодно'; WordDivider(SL); for i := 0 to SL.Count - 1 do Memo1.Lines.Add(SL[i]); // выводим разбитый на слова текст П.С. тема трёх MAD-ов |
Этот пользователь сказал Спасибо phomm за это полезное сообщение: | ||
madmax190 (28.04.2014)
|
#11
|
|||
|
|||
Спасибо большое, это то что мне нужно.
|
#12
|
||||
|
||||
Цитата:
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров |
#13
|
||||
|
||||
Да хоть двадцать, ключ rfReplaceAll заставит функцию делать замены пар пробелов до упора.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#14
|
||||
|
||||
Цитата:
Код:
text := 'a b'; text := StringReplace(text, ' ', ' ', [rfReplaceAll]); text := StringReplace(text, ' ', '0', [rfReplaceAll]); Результат: a00b (на DelphiXE3) ЧЯДНТ? P.S. В куске кода еще и результат работы StringReplace никуда не сохраняется. Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров |
Этот пользователь сказал Спасибо madMonia за это полезное сообщение: | ||
phomm (28.04.2014)
|
#15
|
|||
|
|||
Кстати, да, печалька какая-то, выдаёт аналогично как у Вас (a00b), а я верил этому флагу всю жизнь..
Надо будет запилить свою функцию схлопывания подстроки из дубликатов символов. Ну а присвоение после стрингреплейса просто где-то потерялось, ну, скажем, это будет дом.задание для копипастеров Ещё по идее такую надо поправочку, чтоб наверняка Код:
Text := Trim(SL.Text); Последний раз редактировалось phomm, 28.04.2014 в 21:10. |