RichEdit i znajdowanie tekstu

0

Witam mam mały problem, mianowicie mam procedure na wyszukiwanie. Procedura liczy mi ile razy dany wyraz wystąpił w tekscie (tekst jest w richedit 1). I teraz moje pytanie jak zrobić taką procedure żeby wyszukany wyraz (całą linie) w Richedit1 przeniosła do Richedit2.

Mam nadzieje że mnie rozumiecie ale jeżeli nie to podobna opcja jest w Delphi. Search\Find in Files...

procedure TForm1.Timer1Timer(Sender: TObject);
Var
FoundAt: LongInt;
StartPos, ToEnd : Integer;
begin
with RichEdit do begin
if SelLength <> 0 then
StartPos := SelStart + SelLength
else
StartPos := 0;

ToEnd := Length(Text) - StartPos;
FoundAt := FindText(Edit1.Text , StartPos, ToEnd, [stMatchCase]);
n:=n+1;
if FoundAt <> -1 then begin
SetFocus;
SelStart := FoundAt;
SelLength := Length(Edit1.Text);
label1.Caption:=inttostr(n);

Z góry dzięki za pomoc

0

To nie powinno stanoic żadnego problemu jeżeli udało ci sie napisac taką procedurę wyszukiwania a przenoszenie lini do innej kontrolki sprawia ci problem to chyba jest z tobą coś nie tak. [cya]

0

To nie powinno stanoic żadnego problemu jeżeli udało ci sie napisac taką procedurę wyszukiwania a przenoszenie lini do innej kontrolki sprawia ci problem to chyba jest z tobą coś nie tak. [cya]

z demosa delphiego? :)

za linie odpowiada [code]lines.strings[/code], po prostu dodajesz(lines.add) do drugiego edita te linie w ktorej znaleziono wyraz.

sadze ze to CIe powinno troszku nakierowac :]
(jesli bladze to sorki :))

0

wiem ze za linie odpowiada lines.string.. i za dodawanie lines.add ale skad mam wiedziec w jakiej lini wyraz został znaleziony

0

wiem ze za linie odpowiada lines.string.. i za dodawanie lines.add ale skad mam wiedziec w jakiej lini wyraz został znaleziony

Masz dwa wyjścia

  1. albo lecisz po kolei wiersze (wg schematu Richedit.Lines.Strings[i]) i kopiujesz je do jakiejś zmiennej i wtedy patrzysz czy jest tam wyraz
  2. albo użyj Perform-a z wartościami EM_LINEFROMCHAR oraz EM_LINEINDEX [cya]
0

dzieki wam wszystkim za pomoc!!! stworzyłem takie coś

if FoundAt <> -1 then begin
SetFocus;
SelStart := FoundAt;
SelLength := Length(Edit1.Text);
label1.Caption:=inttostr(n);
Richedit2.Lines.Add(richedit1.Lines.Strings[RichEdit1.CaretPos.Y]);

jezeli jest cos znalezionewgo wtedy sprawdza pozycje kursora i dodaje linie

1 użytkowników online, w tym zalogowanych: 0, gości: 1