Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Arquivos Texto (.txt) Em Delphi


Guinho.TI

Pergunta

Preciso criar uma rotina que leia uma determinada String dentro de um arquivo txt e retorne se foi encontrada ou não. Eu havia feito o seguinte:

var 
  nomeDoArquivo: String;
  aff:boolean;
  arq: TextFile;
  linha: String;
begin
  AssignFile ( arq, 'C:\log.txt');
  Reset ( arq );
  ReadLn ( arq, linha );

  while not Eof ( arq ) do
  begin
    ReadLn ( arq, linha );
    aff:=ansicontainstext(arq,'error');
    If aff=true then
      Showmessage('ERRO encontrado no Log!')
    else
      showmessage('Log finalizado com sucesso!')
  end;
  CloseFile ( arq );
end;

Quanso eu executo, aparece o seguinte erro: Incompatible Types 'String' and 'Text'

O que fazer para consertar e fazer o que eu quero???

Editado por Micheus
Substituida tag QUOTE por CODE, para melhorar visualização do código.
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Guinho.TI, acho que foi só uma distração sua.

Na chamada a função você está passando a variável TextFile (arq) ao invés da string (linha). Então, troque:

aff:=ansicontainstext(arq,'error');

por

aff:=ansicontainstext(linha,'error');

Outra coisa, ao chamar Readln antes de entrar no while, você está jogando fora a 1ª linha lida, porque logo que entra no while, você chama novamente o Readln. A menos que você queira ignorar a 1ª linha, você dever remover o 1° Readln.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, pior que foi isso mesmo! Olhei com calma e vi que o que você falou está correto! Brigadão mesmo!

Porém ainda não funciona do jeito que eu queria. Estive dando uma olhada sobre como fazer o que eu queria com TStringList e consegui. Vou postar para quem tiver as mesmas dúvidas:

var
(*** VARIÁVEL DE MANIPULAÇÃO DO ARQUIVO ***)
  Arq: TStringList;
  i: Integer;
//x:  Integer
  FileName:string;
  aff:boolean;
  linha:String;
begin
  Arq := TStringList.Create; (*** INSTANCIA A VARIÁVEL ***)
  try
    FileName := 'C:\log.txt';   (*** ATRIBUI O NOME DO ARQUIVO COM O DIRETÓRIO ***)
    if FileExists(FileName) then  (*** VERIFICA SE O ARQUIVO EXISTE ***)
    begin
      Arq.LoadFromFile('C:\log.txt');
      for i := 0 to Arq.Count - 1 do   (*** PERCORRE AS LINHAS  ***)
      begin
        linha:=Arq[i];
        aff:=ansicontainstext(linha,'error');
        If aff=true Then
          Showmessage('LOG executado com erro')
        Else
          Showmessage('LOG executado com sucesso!')
      end;//fim for
    end;//fim else
  finally
    FreeAndNil(Arq); //  LIBERA A VARÁVEL DA MEMÓRIA
  end;
end.

Editado por Micheus
Substituida a tag QUOTE por CODE, para melhor visualização do código.
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...