![]() ![]() | |
![]() ![]() | |
![]() |
Конференции: 3D графика/ Delphi/ Игры/ Бизнес/ Потрепаться/ PHP&MySQL/ QuarkXPress/ Turbo Pascal/ WEB-дизайн
Fantom [2003-09-05 12:20:48]
ПАРСИНГ СТРОКИ
Привет!
Поставлена задача: пользователь заносит в поле Edit, Memo
или SQL таблицу с клавиатуры нечто вида "а+в".
Необходимо в Delphi произвести вычисления по функции, заданной таким образом.
Подскажите, с какой стороны браться за ентот орешек
Спасибо!
Man in Black ® [2003-09-05 14:48:02] [1]
Проще всего:
Var
sl:TStringList;
Begin
Edit.Text:='base+table+select+something+etc';
sl:=TStringList.Create;
sl.text:=Edit.Text;
sl.text:=StringReplace(sl.text, '+' , #13#10 ,[rfReplaceAll]);
//После этого sl[0] будет равнятьсяbase, sl[1] - table, sl[2] - select и т.д.
sl.free;
End;
Можно делать более гибко, работая с Pos и Length.
Sabrian [2003-09-25 18:43:08] [2]
Загляни на http://algolist.manual.ru/ там в разделе "Разработка компиляторов и разбор выражений" есть статья о Обратной польской нотации, а если самому писать влом будет - оставь mail, я тебе свой исходник скину.
Tiger [2004-02-15 12:06:57] [3]
Sabrian, скинь, плиз, свой исходник на мой мэйл: p-tigr@mail.ru
Заранее спасибо!!!
SomeOne [2009-07-29 19:03:17] [4]
1 [2010-05-03 14:15:14] [5]
User [2010-05-04 14:50:56] [6]
Thanks mate
SomeOne [2010-05-08 11:59:03] [7]
GlooK [2010-11-03 08:26:54] [8]
Лучше всего использовать модуль TRegExpr как описано в статье http://tdlite.ru/delphi/coregexpr/