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

Вниз

Как доработать или использовать функцию Поиска?   Найти похожие ветки 

 
Алексей Зотов   (2009-10-07 18:51) [0]

function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): Boolean;
var
 StartPos, Position, Endpos: Integer;
begin
 StartPos := 0;
 with RichEdit do
 begin
   Endpos := Length(RichEdit.Text);
   Lines.BeginUpdate;
   while FindText(SearchText, StartPos, Endpos, [stMatchCase])<>-1 do
   begin
     Endpos   := Length(RichEdit.Text) - startpos;
     Position := FindText(SearchText, StartPos, Endpos, [stMatchCase]);
     Inc(StartPos, Length(SearchText));
     SetFocus;
     SelStart  := Position;
     SelLength := Length(SearchText);
   end;
   Lines.EndUpdate;
 end;
end;


Чтото типа этого

var
astr : boolean;
begin
 //SearchForText_AndSelect(SearchRichEdit, SearchEdit.Text);
  if SearchForText_AndSelect = astr then
  SearchEdit.Text := "Поиск успешно завершен!"
  else SearchEdit.Text := "Ни чего не найдено!";
end;


 
KilkennyCat ©   (2009-10-07 21:07) [1]

дорабатываю:
астр тут нафигненужен

if SearchForText_AndSelect(richedit1, "перитонит диссоциирует") then
 SearchEdit.Text := "Поиск успешно завершен!"
 else SearchEdit.Text := "Ни чего не найдено!";


 
Алексей Зотов   (2009-10-07 21:34) [2]


> KilkennyCat ©   (07.10.09 21:07) [1]


При любом раскладе: Ни чего не найдено!
if SearchForText_AndSelect(SearchRichEdit, SearchEdit.Text) then
  SearchEdit.Text := "Поиск успешно завершен!"
  else SearchEdit.Text := "Ни чего не найдено!";


 
KilkennyCat ©   (2009-10-07 21:56) [3]


> Ни чего

слитно пишется, а функциям результат присваивать стоит иногда. либо по имени функции, либо result := ... говорят, это помогает.


 
Алексей Зотов   (2009-10-07 22:35) [4]


> KilkennyCat ©   (07.10.09 21:56) [3]

Так я и просил о доработке функции.
Ошибку Реализации я понял!


 
KilkennyCat ©   (2009-10-07 22:36) [5]

теперь работает?


 
Алексей Зотов   (2009-10-07 22:55) [6]


> KilkennyCat ©   (07.10.09 22:36) [5]

нет!


 
KilkennyCat ©   (2009-10-07 23:06) [7]

странно. ошибку же понял...

function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): boolean;
var
Position: Integer;
begin
  RichEdit.Lines.BeginUpdate;
  Position := FindText(SearchText, 0, Length(RichEdit.Text), [stMatchCase]);
  if Position <> -1 then begin
    SelStart  := Position;
    SelLength := Length(SearchText);
    Result := true;
  end else
    Result := false;
  RichEdit.Lines.EndUpdate;  
end;


var
 aaa : longint;
begin
 aaa := SearchForText_AndSelect(SearchRichEdit, SearchEdit.Text);
if aaa <> -1 then
 SearchEdit.Text := "Поиск успешно завершен!"
 else SearchEdit.Text := "Ни чего не найдено!";


 
KilkennyCat ©   (2009-10-07 23:07) [8]

нижний кусок - мусор.


 
Алексей Зотов   (2009-10-08 07:34) [9]


> KilkennyCat ©   (07.10.09 23:07) [8]

Верхний тоже, даже не компилируется!
with RichEdit do - пропущено вообще!

В нижнем ошибка преобразования
aaa := SearchForText_AndSelect(SearchRichEdit, SearchEdit.Text);
E2010 Incompatible types: "Integer" and "Boolean"


 
Алексей Зотов   (2009-10-08 08:12) [10]

var
aaa : Boolean;
begin
aaa := SearchForText_AndSelect(SearchRichEdit, (SearchEdit.Text));
if aaa = true then
SearchEdit.Text := "Поиск успешно завершен!"
else SearchEdit.Text := "Ни чего не найдено!";
end;


Вроде пашет, но в RichEdit не выделяет Найденное вхождение!


 
Алексей Зотов   (2009-10-08 08:54) [11]

А вот так все в порядке, разобрался сам! Спс за ПРАВИЛЬНОЕ НАПРАВЛЕНИЕ!
function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): Boolean;
var
 StartPos, Position, Endpos: Integer;
begin
 StartPos := 0;
 with RichEdit do
 begin
   Endpos := Length(RichEdit.Text);
   Lines.BeginUpdate;
   while FindText(SearchText, StartPos, Endpos, [stMatchCase])<>-1 do
   begin
     Endpos   := Length(RichEdit.Text) - startpos;
     Position := FindText(SearchText, StartPos, Endpos, [stMatchCase]);
     if Position <> -1 then begin
     Inc(StartPos, Length(SearchText));
     SetFocus;
     SelStart  := Position;
     SelLength := Length(SearchText);
     result := true;
   end else
   Result := false;
   Lines.EndUpdate;
  end;
 end;
end;

реализация
var
aaa : Boolean;
begin
aaa := SearchForText_AndSelect(SearchRichEdit, (SearchEdit.Text));
if aaa = true then
SearchEdit.Text := "Поиск успешно завершен!"
else SearchEdit.Text := "Ничего не найдено!";
end;


 
KilkennyCat ©   (2009-10-08 10:57) [12]

Да нифига ты не разобрался.

Лишний поиск, захламленный код и лишний ввод переменной....

> Верхний тоже, даже не компилируется!
> with RichEdit do
>
> - пропущено вообще!


Зато у тебя оно не пропущено и работает мощно. А не компилируется почему?


> В нижнем ошибка преобразования
> aaa := SearchForText_AndSelect(SearchRichEdit, SearchEdit.
> Text);


Я жне говорил, нижнее - мусор... случайно скопировал.


 
Алексей Зотов   (2009-10-08 11:28) [13]


> А не компилируется почему?


вот так Скомпилировалось
function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): boolean;
var
Position: Integer;
begin
 with RichEdit do
begin
 RichEdit.Lines.BeginUpdate;
 Position := FindText(SearchText, 0, Length(RichEdit.Text), [stMatchCase]);
 if Position <> -1 then begin
   SelStart  := Position;
   SelLength := Length(SearchText);
   Result := true;
 end else begin
   Result := false;
 RichEdit.Lines.EndUpdate;
 end;
end;
end;


Но функцию свою, а именно выделения найденного вхождения, не выполняет!

Ваш вариант, весь красный становится в среде!!!


 
Алексей Зотов   (2009-10-08 11:44) [14]

Доработанный и работающий вариант!
function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): boolean;
var
Position: Integer;
begin
 with RichEdit do
begin
 RichEdit.Lines.BeginUpdate;
 Position := FindText(SearchText, 0, Length(RichEdit.Text), [stMatchCase]);
   if Position <> -1 then begin
     SetFocus;
     SelStart  := Position;
     SelLength := Length(SearchText);
     Result := true;
 end else
     Result := false;
     RichEdit.Lines.EndUpdate;
 end;
end;


Ну и ну?


 
brother ©   (2009-10-08 11:56) [15]

оформление
function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): boolean;
var
 Position: Integer;
begin
 with RichEdit do
 begin
   RichEdit.Lines.BeginUpdate;
   Position := FindText(SearchText, 0, Length(RichEdit.Text), [stMatchCase]);
   if Position <> -1 then
   begin
     SetFocus;
     SelStart := Position;
     SelLength := Length(SearchText);
     Result := true;
   end else
     Result := false;
   RichEdit.Lines.EndUpdate;
 end;
end;


 
KilkennyCat ©   (2009-10-08 15:37) [16]


> Ваш вариант, весь красный становится в среде!!!

Ужасно!!!
А в Вашем варианте тема With не раскрыта все равно. :-Р


 
Denis__ ©   (2009-10-09 21:03) [17]


> Ваш вариант, весь красный становится в среде!!!

Ему там по ходу стыдно и неудобно!? о_О Ахтунг!



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

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

Наверх





Память: 0.49 MB
Время: 0.006 c
15-1253626742
StriderMan
2009-09-22 17:39
2009.11.22
рынок "тяжелых" вычислений


4-1221721293
roughneck
2008-09-18 11:01
2009.11.22
Получить иконку связанную с недоступным в сети файлом


2-1254927060
Алексей Зотов
2009-10-07 18:51
2009.11.22
Как доработать или использовать функцию Поиска?


1-1225795558
harisma
2008-11-04 13:45
2009.11.22
Как реализовать?


8-1200150296
antonn
2008-01-12 18:04
2009.11.22
Быстрое копирование битмапов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский