Esse artigo faz parte da revista Clube Delphi Edição 59. Clique aqui para ler todos os artigos desta edição

Manipulação de Strings

Dicas e técnicas úteis

 

O Delphi possui funções bastante úteis para a manipulação de dados do tipo string, muitas desconhecidas pela maioria dos desenvolvedores. Uma das principais rotinas com certeza é a StringReplace, discutida neste artigo,onde criaremos um template processor. No final, veremos como usar uma classe bastante útil relacionada ao assunto: TStringList.

 

A função StringReplace

A função StringReplace é bastante útil para localizar e substituir

substrings armazenadas dentro de uma string. A rotina é definida

da seguinte forma:

 

function StringReplace(const S. OldPattern,

   NewPattern: string: Flags: TReplaceFlags): string;

 

Parâmetros:

. S: é a string de origem que possui as substrings a serem localizadas e alteradas;

 

.OldPattern: substring que será localizada e substituída pela string passada em NewPattern;

 

.NewPattern: substring que irá substituir as ocorrências da string passada em OldPattern;

 

.Flags: conjunto de opções que são utilizadas como critério para localização e substituição da string passada em OldPattern.Os valores possíveis para esse parâmetro são:

 

.rfReplaceAll: substitui todas as ocorrências de OldPattern. Caso essa opção não esteja presente, apenas a primeira ocorrência será substituída;

. rflgnoreCase:compara a substring sem diferenciar entre letras maiúsculas e minúsculas.

 

Vamos fazer um exemplo simples utilizando essa função. Nossa aplicação irá gerar um documento para verificação de endereço de cada cliente cadastrado, a partir de um arquivo de template. Ou seja, vamos criar um template processor.

 

Nota: Um template processor permite executar buscas fazendo substituições em um arquivo' de template, trocando tags (ou símbolos) por dados. É bastante utilizado para criar aplicativos de mala-direta.

 

Inicie uma nova aplicação VCL no Delphi (File|New>VCL Forms Application) e adicione no formulário os seguintes componentes: dois Memos ("mmTemplate" e "mmProcessado"), um BitBtn, um DataSource ("dsCustomer"), um ClientOataSet ("cdsCustomer") e um DBGrid.

Aponte a propriedade DataSource do DBGrid para o dsCustomer e DataSet de dsCustomer para cdsCustomer,Usaremos como fonte de dados o arquivo customer.xml que acompanha o Delphi. Para isso, basta clicar com o botão direito do mouse sobre o cdsCustomer e escolher a opção Load from MyBase table. Selecione o arquivo citado anteriormente, que está localizado por padrão no diretório c:\Arquivosde programas\Arquivos comuns\Borland Shared\Data.

 

Dica: Você pode usar a mesma técnica com outros tipos de DataSets, como Query, Table, IBTable, ADOTable etc.

 

Adicione o seguinte código na seção private do formulário:

 

function ProcessarTemplate(const ArqTemplate: string;

   Registro: TDataSet): string;

 

Implemente o método conforme mostrado na Listagem 1. O código varre o texto passado no parâmetro ArqTemplate, procurando e substituindo as tags do template por dados armazenados no DataSet passado no parâmetro Registro.A função faz a busca pelo nome de cada campo do DataSet substituindo por seu valor.

O processo de busca e substituição é feito utilizando a função StringReplace e seus argumentos. Para o evento OnClick do botão digite o seguinte código:

 

mmProcessado.Text :=

   ProcessarTemplate(mmTemplate.Text.cdsCustomer);

 

Listagem1. Função para processar o template

...

Quer ler esse conteúdo completo? Tenha acesso completo