Форум: "Начинающим";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];
ВнизПро поиск в RichEdit... Найти похожие ветки
← →
Nic (gr. 442) (2006-03-20 17:38) [0]Вопрос такой:Имеется TRichEdit. допустим с таким текстом:
Name Вася dsfsdfdsfsdfdsfsd df gt вапв аппа ва павпвапеавпаа аппа пвапаFamily Пупкин dfdsfsdf
В TreeView должно отоброжаться Типо
+Name
Вася
+Family
Пупкин
Так вот не подскажите как это осуществить. Текст может быть довольно большим~ 1000 строк. И может меняться, т.е. если мы допустим в Пупкин удалим одну букву, то чтобы в TreeView Фамилия тоже изменилась или удалим в Family одну букву и Пупкин бы исчез.Я думал поставить таймер и секунды через 4 проверять текст на нахождение слов Family, Name. Не будет ли это тормозить? Подскажите, пожалуйста, как осуществить поиск по TRichEdit, чтобы при нахождении Famile в Tree записывалось следующее слово, какими функциями оперировать.
← →
Boris Marchenko © (2006-03-20 17:49) [1]Таймер здесь, не нужен... Проверяйте на OnKeyPress. 1000 строк, имхо, немного, тормозить не должно.
Поиск обычный,
for i := 1 to ... do
Наличие слов Name и Family проверять как
if AnsiMidStr(S, i, 4) = "Name" и if AnsiMidStr(S, i, 6) = "Family".
← →
Nic (gr. 442) (2006-03-20 22:17) [2]СПАСИБО ОБЯЗАТЕЛЬНО ПОПРОБУЮ, как Вы написали. Ещё отпишусь...
← →
Nic (gr. 442) (2006-03-20 22:24) [3]Я сейчас подумал, если человек быстро будет набирать текст на клавиатуре(символов 200 в минуту) Вы думаете не будет подвисать?
← →
Nic (gr. 442) (2006-03-21 03:18) [4]Пока что маленькую часть сделал, не тормозит. Поставил на событие OnKeyPress. Пользовался методом FindText(). Ещё вопрос по RichEdit как вызвать его процедуру OnKeyPress:=Text_GL_PRESS_KEY из других процедур.
procedure TIndex_Form.Text_GL_PRESS_KEY(Sender: TObject; var key: char);
begin
.
.
end;
Text_GL_PRESS_KEY(NIL, "q") <--- Не работает
← →
clickmaker © (2006-03-21 11:09) [5]
> Text_GL_PRESS_KEY(NIL, "q") <--- Не работает
там же var, а ты передаешь константу
← →
Nic (gr. 442) (2006-03-21 12:45) [6]Попробую разобраться...
Но пока начал делать кусок задания появился вопрос. А можно ли с помощью FindText искать несколко слов???
Т.е.
FindText("Name" or "Family", ..., ..., [stWholeWord])
так просто не работает. А хотелось бы чтобы он искал Name , но если раньше встретится Family то записывал его. Чтобы было в одном цикле. А не так, чтобы он весь текст просканил вначале на Name, а потом опять начал сканить на Famiy
← →
clickmaker © (2006-03-21 13:06) [7]
> Nic (gr. 442) (21.03.06 12:45) [6]
напиши свою, более "умную" функцию поиска. У тебе же есть RichEdit.Lines...
← →
Рамиль © (2006-03-21 13:11) [8]Вообще, я бы предложил начинать искать при паузе в наборе, а то при большом тексте тормозить будет (и, наверное, в отдельном потоке, скопировав весь текст из richedit, если будет и дальше тормозить).
← →
Nic (gr. 442) (2006-03-21 13:58) [9]>напиши свою, более "умную" функцию поиска. У тебе же есть RichEdit.Lines...
А встроенных нет ? :-(
Рамиль
>наверное, в отдельном потоке, скопировав весь текст из richedit
А как это сделать? Помогите, pls я с потоками не работал.
← →
Рамиль © (2006-03-21 14:11) [10]Без потока на паузу при наборе попробуй сначала. Если скорости хватит, то заморачиваться с потоком не надо.
← →
Nic (gr. 442) (2006-03-21 14:32) [11]Рамиль
> Без потока на паузу при наборе попробуй сначала
Сейчас порылся в событиях Rich. Чего-то такого не нашёл. Есть такое событие? Или надо поработать с таймером?
P.S. Извените за может быть для Вас глупые вопросы. Я не волшебник я только учусь :-)
← →
Рамиль © (2006-03-21 14:37) [12]Ессно с таймером. По KeyPress запускаешь заново, в OnTimer дизэйблишь и ищешь. Interval подбираешь экспериментально.
← →
Nic (gr. 442) (2006-03-21 14:48) [13]Так я и думал...
Ладно буду пробовать. Ещё FindText свой писать, хех, ....
← →
Nic (gr. 442) (2006-03-21 15:52) [14]С Timer разобрался. Пока скорость устраивает. Только, почему-то при нажатии на DEL OnPressKey не срабатывает. Не знаете из-за чего такое может быть?
← →
Рамиль © (2006-03-21 16:17) [15]OnKeyDown используй
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.035 c