Separar informações de um texto padrão

16/03/2016

0

Boa tarde.

Preciso de um auxílio.

Vou criar uma projeto novo em delphi e não estou conseguindo

chegar a uma rotina que faça o que eu preciso.

Seguinte...tenho um texto padrão

Exemplo de texto:
Demonstração para Cliente Prospect (Sem Instalação) no dia:

16/03/2016 - Horário: 15:00 - Falar com: Fulano de Tal -

Empresa: EMPRESA XYZ - Telefone: (41) 3333-4455 - Vendedor:

Vendedor A;

A partir deste texto, queria colá-lo em um memo, por exemplo

e extrair o nome do contato "Fulano De Tal", depois o nome

da empresa "EMPRESA XYZ" e depois o Telefone de Contato

"(41) 3333-4455".

Se observarem estes dados sempre estarão separados por : +

espaço + informação a ser capturada + espaço traço(-).

Preciso justamente achar na descrição a informação "Falar

com:" e capturar a proxima string. O mesmo vale para as

demais informações.

Como posso proceder?

Alguem pode me ajudar com o código fonte?
Fábio Sela

Fábio Sela

Responder

Posts

17/03/2016

Gilberto Moura

....
Responder

17/03/2016

Marco Antônio

Fábio bom dia, a idéia é a mesma do outro post que você questionou sobre 'LOCALIZAR STRING EM ARQUIVO TXT E COPIAR TEXTO APÓS TEXTO'.
Ao invés de colocar no memo vc colocaria em uma 'TStringList' e através do loop com  a função pos() você extrai o texto desejado. Lembrando que você tem que copiar até o primeiro '-'( hifém).

Mais ou menos seria assim:

var
  xxTexto    : string; 
  xxContato  : string;
  xxEmpresa  : string;
  xxTelefone : string;

  i: Integer;
  y : integer;
  Lista: TStringList;

begin

  xxContato  := '';
  xxEmpresa  := '';
  xxTelefone := '';

  Try

    Lista := TStringList.Create;
 
    if FileExists(Edit1.Text) then
    begin
      Lista.LoadFromFile(Edit1.Text);
 
      for i := 0 to Lista.Count - 1 do
      begin

        xxTexto := Lista[i];
      
        if pos('Falar com:', xxTexto ) > 0 then
          begin

            xxTexto := copy( xxTexto , pos('Falar com:', xxTexto ) + 10 , length( xxTexto ) );   

            for y := 1 to length( xxTexto ) do 
              begin

                if xxTexto[ y ] = '-' then break;

                xxContato := xxContato + xxTexto[ y ];

              end;

          end; 

        if pos('Empresa:', xxTexto ) > 0 then
          begin

            xxTexto := copy( xxTexto , pos('Empresa:', xxTexto ) + 8 , length( xxTexto ) );   

            for y := 1 to length( xxTexto ) do 
              begin

                if xxTexto[ y ] = '-' then break;

                xxEmpresa := xxEmpresa + xxTexto[ y ];

              end;

          end; 


        if pos('Telefone:', xxTexto ) > 0 then
          begin

            xxTexto := copy( xxTexto , pos('Telefone:', xxTexto ) + 9 , length( xxTexto ) );   

            for y := 1 to length( xxTexto ) do 
              begin

                if xxTexto[ y ] = '-' then break;

                xxTelefone := xxTelefone + xxTexto[ y ];

              end;

          end; 


      end;

    end;

  Finally

    Lista.Free;

  End;

end;

ShowMessage( 'Capturei contato: ' + xxContato );
ShowMessage( 'Capturei empresa: ' + xxEmpresa );
ShowMessage( 'Capturei telefone: ' + xxTelefone );


créditos à: https://www.devmedia.com.br/forum/localizar-string-em-arquivo-txt-e-copiar-texto-apos-texto/547588

Abc.
Responder

17/05/2016

Fábio Sela

Obrigado, vou testar aqui.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar