Форум: "Начинающим";
Текущий архив: 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