![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск фрагмента текста в Memo и выделение его. [D7, WinXP]
Wood © (2004-11-29 11:34:00)Простите за ламерский вопрос, но просто еще не приходилось сталкиваться с такой проблемой. Подскажите, какими функциями пользоваться или ссылочку, плиз. Спасибо!
Wood (2004-11-29 12:56:00) [1]>> MBo ©,kaktus
спасибо, буду разбираться
kaktus (2004-11-29 12:33:00) [2]Вот в примере Memo1.SelStart := prProbel - это установка указателя (виртуально) на начальную позицию выделяемого текста. Для поиска фрагмента текста предлагаю такой себе алгоритм:
1.Определить длину искомого фрагмента(k := Length(str))!
2.В секторе объявлений переменных (глобально) - создай переменную допустим обзовем ее count;
3.Далее в обработчике события Memo OnKeyPress ты прописываеш Inc(count).
4.Потом после этого условие
if count = Length(str) then begin
memo1.selStart := prPos;
memo1.selLength := Length(Memo1.Text);
end else begin
prPos := Length(Memo1.Text);
count := 0;
end;
Пробуй может будут ошибки - писал здесь!
MBo (2004-11-29 12:18:00) [3]http://delphibase.endimus.com/?action=viewfunc&topic=strsearch&id=10272
http://delphibase.endimus.com/?action=viewfunc&topic=strsearch&id=10271
Wood (2004-11-29 12:07:00) [4]Кажется, с POS я начал разбираться, как установить курсор на найденом участке, т.е. какое значение будет после функции Pos() для selStart и selLength.
Wood (2004-11-29 11:57:00) [5]MBo ©[1]
selStart и selLength я понимаю, POS - посмотрю F1, только откуда я узнаю с какого момента selStart и selLength, пока еще надо найти кусок текста...Спасибо.
kaktus >> вот типа пример выделения и замены текста определенной длины на забитые значения (автозамена)[2]
Спасибо, с key более-менее понятно, но ПОИСК в готовом тексте!?
kaktus (2004-11-29 11:50:00) [6]Если стоит вопрос о поиске фрагмента текста, то ты здесь работай с символами по обработке события Memo KeyPress или KeyDown. В этих обработчиках есть параметр Key - это символ нажатой клавиши. Далее для выделения текста в Memo используют следующее:
selStart и selLength
вот типа пример выделения и замены текста определенной длины на забитые значения (автозамена):
for i := 0 to keys.Count-1 do
begin
if (keys.Strings[i] = Str) then
begin
Memo1.SelStart := prProbel;
//первый пробел
Memo1.SelLength := curProbel - prProbel;
//текущий пробел - предедущий
Memo1.SetSelTextBuf(PChar(zam.strings[i]));
Break;
end;
end;
MBo (2004-11-29 11:44:00) [7]Memo.Lines.Text
Pos SelStart SelLength