[firebase-br] off topic: mala direta

Francisco francisco em logosinfo.com.br
Dom Set 30 19:03:49 -03 2007


obrigado a todos pela dica, melhor encerrar por aqui, ja q tamos fugindo um 
pouco do escopo da lista. valeu amigos.
----- Original Message ----- 
From: "Eduardo Bahiense" <eduardo em icontroller.com.br>
To: <lista em firebase.com.br>
Sent: Sunday, September 30, 2007 4:47 PM
Subject: Re: [firebase-br] off topic: mala direta


[...]
> texto de forma padrão: ex:
> &nome&
> &endereço&
> ou
> <<nome>>
> <<endereço>>
>
> mandar sua aplicação ler o texto rtf para uma variável de texto, ou ums
> stringlist e usar as funções do próprio Delphi (o help é rico nelas).

No caso de Rtf tem que fazer via FindText.
A procedure abaixo demonstra como fazer se você passar uma lista do tipo


ReplaceList.Add('Nome=José Antônio da Silva');
ReplaceList.Add('Endereco=Rua x, No Tal');

ou ainda

ReplaceList.Values['Nome']     := 'José Antônio da Silva'
ReplaceList.Values['Endereco'] := 'Rua x, No Tal'

No caso, ela procura <Nome> e substitui por José Antônio da Silva e
assim  sucessivamente


procedure DoReplaceRichFields(RichEdit: TRichEdit;  ReplaceList:TStrings);
var FoundAt, i, StartPos, EndPos, nSize:integer;
     ToSearch, ToReplace:String;
begin
      EndPos := RichEdit.GetTextLen;
      for i := 0 to ReplaceList.Count-1 do
          begin
               StartPos := 0;
               FoundAt  := 0;
               while FoundAt >= 0 do
                     begin
                          ToSearch  := '<'+ReplaceList.Names[i]+'>';
                          ToReplace := ReplaceList.ValueFromIndex[i];
                          nSize     := Length(ToSearch);
                          FoundAt := RichEdit.FindText(ToSearch,
StartPos, EndPos, [stMatchCase]);
                          if FoundAt >= 0 then
                             begin
                                  RichEdit.SelStart  := FoundAt;
                                  RichEdit.SelLength := nSize;
                                  RichEdit.SelText   := ToReplace;
                                  StartPos           := FoundAt+nSize;
                             end;
                     end;
          end;
end;

[]s Eduardo


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa






Mais detalhes sobre a lista de discussão lista