Newsgroup: it.comp.lang.delphi
Titolo: Ricerca di una stringa all'interno di un memo

Ciao a tutti.
Sto cercando di fare uno dei miei primi programmini in delphi. Adesso dovrei
cercare all'interno di un testo di un memo una determinata parola e salvare
in una stringa quello che compare dopo tot caratteri dalla parola trovata.
Esiste qualche funzione del memo che possa aiutarmi?
In c saprei come fare leggendo da un testo ma in delphi come faccio a far
scorrere il mio "puntatore" sui vari caratteri del memo?
Grazie

 Grazie
Andrea

 espressioni regolari.
Ehm, scusa la mia ignoranza ma cosa intendi per espressioni regolari? :)

 Ehm, scusa la mia ignoranza ma cosa intendi per espressioni regolari? :)
Intendo le RegExp come quelle Perl( o era Python? ).
http://www.regexp.com/
Andrea

Ma se volessi fare una cosa del tipo: arrivo col cursore fino a dove trovo
questa stringa, poi vado avanti di quante posizioni voglio e poi cerco
un'altra stringa? Senza ripartire dall'inizio?


http://www.torry.net/vcl/vcltools/text/regexpr.zip
Questo *dovrebbe* prevedere la ricerca di piů occorrenze, visto che č
proprio lo scopo di una regular expression :-)
Nel caso non fosse cosě, no problem, ti basta avere una struttura tipo:
var Buffer: String;
     StrPos : Integer;
     StringsIdentified : TStringList;
begin
   // Le inizializzazioni sono molto importanti
   Buffer := MiaStringaOriginaria;
   StrPos := 0;
   StringsIdentified : TStringList.Create;
   // Cerca nella stringa
   while Buffer <> '' then
   begin
     StrPos := Pos( SubString, Buffer );
     StringsIdentified.Add( Copy( Buffer,StrPos+Delta,
                            NumeroDiCaratteri );
     Delete( Buffer,1,StrPos+Delta+NumeroDiCaratteri );
   end;
end;
Il codice č scritto al volo, ma ti ripeto, le regexp servono
proprio a questo, č vero che ci vuole un pň per capirle, ma una
volta capite vedrai che ti chiederai come hai fatto fino a
quel momento :-)
Ciao,
Andrea

 proprio lo scopo di una regular expression :-)
Lo scopo principale delle espressioni regolari è quello di riconoscere
"pattern" specifici.
In questo caso credo che l'uso delle espressioni regolari sia sprecato.

Mh ok ho scaricato il componente e mi sono letto l'help ma ancora non ho
capito bene come si utilizzano :|
Ad esempio io vorrei cercare in un documento/buffer una stringa del tipo
342,82 (o meglio un numero non specificato di cifre, una virgola, 2 cifre.
E' un prezzo). Non mi sembra sia possibile specificare che la stringa da
cercare sia composta da cifre.... o si???
E cmq sia che funzione dovrei utilizzare? La exec, la execPos nel caso
voglia partire da dove voglio e la execNext per il successivo giusto?
Ma guardando nell'help tutte queste funzioni prendono un solo attributo in
input....
Poi ho guardato nel codice dell'esempio e ci ho capito ancora meno... :(
with TRegExpr.Create do try
     Expression := MailTemplate;
     if Exec (AText) then
      REPEAT
        Result := Result + System.Copy (AText, PrevPos,
         MatchPos [0] - PrevPos) + '<a href="mailto:' + Match [0] + '">' +
Match [0] + '</a>';
        PrevPos := MatchPos [0] + MatchLen [0];
      UNTIL not ExecNext;
     Result := Result + System.Copy (AText, PrevPos, MaxInt); // Tail
    finally Free;
   end;

 Poi ho guardato nel codice dell'esempio e ci ho capito ancora meno... :(
Hai provato a farlo eseguire? Ad ogni modo, prova la regex che ti ho
dato io, dovrebbe andare bene.
Ciao,
Andrea