Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Вниз

Поиск вверх/вниз по RichEdit (Memo)! и чтоб было выделение и пока   Найти похожие ветки 

 
Kurt   (2002-07-29 18:19) [0]

Поиск вверх/вниз по RichEdit (Memo) с любого места! и чтоб было выделение и показ того самого места где найдено и что найдено.
Я уже долго с этим маюсь, но все как то не получается.
с помощью FindDialog.FindText могу это делать "вниз" (и выделять уже зная "новый" SelStart). Но "вверх" это не делается. С помощью цикла по строчкам с помощью уважаемого <Song> а также <Mbo>, но как-то окончательный вариант в связи с неполучением результируещего SelStart-а, да и в конце концов када получил очень медленно работалось. Уже совсем замучился! ПОМОГИТЕ люди, голова уже болит:-) Предложите свои варианты этого, киньте исходнички!
а то времени у меня мало, куча всего и не получается сесть основательно и доделать!
ПЛИЗ! Очень буду благодарен! с меня пиво!:-))


 
Kurt   (2002-07-30 09:47) [1]

Люди, помогите!!!
ау!:-)


 
Song   (2002-07-30 09:54) [2]

В привведённом цикле использовалась ф-ия Pos(). Она возвращает номер символа в строке, где была найдена искомая строка. Но это не SelStart. Поэтому чтобы найти нужное число мы высчитаем его из следующей формулы:

EM_LINEINDEX от номера искомого ряда+результат от ф-ии Pos и возможно минус один (надо попробовать). Вот это и будет значение SelStart. SelLength будет равно длине искомой строки.


 
lenin   (2002-07-30 10:20) [3]

Я не знаю, что тебе советовали Song и Mbo, но можно попробывать следующее:
k:=length(RichEdit1.Text);
k1:=length(fins);
for i:=1 to k do//i:=k downto 1//
begin
if k1>k-i then Continue;
temps:=copy(RichEdit1.text,i,k1);
if temps=fins then
begin
//------
break;
end;
end;


 
Kurt   (2002-07-30 10:23) [4]

краткий кусок текста программы можешь кинуть, если не трудно?


 
Kurt   (2002-07-30 10:29) [5]

Song! я тебе в смысле. ну с использованием EM_LINEINDEX...


 
Song   (2002-07-30 10:52) [6]

ооох... Kurt, ну неужели так трудно?

...
IF Pos(S,Lines[t])>0 then
Begin
SelStart:=Perform(EM_LINEINDEX,t,0)+Pos(S,Lines[t]);
SelLength:=Length(S);
End;
...


Если будет ошибаться на символ добавьте в строку SelStart:=... -1 перед точкой с запятой.


 
Song   (2002-07-30 10:54) [7]

И ещё чтобы выделение было видно нужно чтобы был фокус на компоненте, поэтому возможно придётся поставить SetFocus перед SelStart


 
Kurt   (2002-07-30 11:41) [8]

Song! Большущее спасибо! я тут правда уже вроде допер:-), но ты реально помог. Просто куча всего на работе и нет времени сосредоточиться.
Кстати, на счет SetFocus то понятно, но его можно ставить не обязательно перед SelStart-ом:-), там все равно, лишь бы када нужно чтоб было видно выделение.

Всем спасибо, извините за беспокойство!


 
Kurt   (2002-07-30 15:47) [9]

Вроде все сделал. работает, НО....
Када файл где-то около и более 8 Мегабайт, то блин так долго все делаетсяб можно даже сказать зависает, настолько долго!!! (я каждую строчку RichEdit.Lines анализирую)....
Не подскажите, что делать??? как оптимизировать?!!!


 
Kurt   (2002-07-30 16:23) [10]

ХЕЛП!!!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.022 c
14-35414
Alx2
2002-07-16 16:09
2002.08.12
Что за бред?


4-35498
tretmike
2002-06-05 12:26
2002.08.12
Как удалить окно из панели задач, но оставить его видимым


3-35140
Arkady
2002-07-21 19:31
2002.08.12
Удаленные записи


1-35247
Shil
2002-07-30 18:12
2002.08.12
Проблема с аттачем with indy


4-35524
Magic
2002-05-26 08:08
2002.08.12
Как поместить кнопки и рисунки на овальную форму?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский