Contar cuantas veces se repite una palabra en un RichEdit  

Enviado Por: Radikal (Q3 Team)
Web : http://www.q3.nu
Email: radikal@q3.nu
Fecha: 14/02/04

Truco accedido 64 veces

 


Tenemos un texto cargado enun RichEdit y, queremos contar cuantas veces se repite una cadena dentro de él.
Muy fácil usando la siguiente función:

Para usarla, pon un RichEdit (RichEdit1) y un TButton (Button1) en una form:


 procedure TForm1.Button1Click(Sender: TObject);

   function CuentaPalabrasEnRE(QueRE: TRichEdit; Palabra: string):integer;
   var
     EncontradoEn : integer;
     Largo        : integer;
   begin
     Result:=1;
     Largo:=Length(QueRE.Text);

     //La primera busqueda es caso especial, dado que si no existe
     //la cadena ni una sola vez, pasamos del resto
     EncontradoEn:=QueRE.FindText( Palabra,
                                   EncontradoEn,
                                   Largo,
                                   [Stmatchcase]);

     if EncontradoEn <> -1 then begin
       repeat
         EncontradoEn:= QueRE.FindText( Palabra,
                                        EncontradoEn,
                                        Largo,
                                        [Stmatchcase]);

         if EncontradoEn <> -1 then begin
           EncontradoEn:=EncontradoEn+Length(Palabra);
           Inc(Result);
         end;

       until EncontradoEn = -1;
     end else Result:=0;
   end;

 begin
   Label1.Caption:=IntToStr( CuentaPalabrasEnRE(RichEdit1,'Eric') );
 end;




Actualizado el 14/02/2004 Result:=1 en vez de Result:=0