Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Arquivos Texto (.txt) Em Delphi


Guinho.TI

Question

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???

Edited by Micheus
Substituida tag QUOTE por CODE, para melhorar visualização do código.
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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.

Edited by Micheus
Substituida a tag QUOTE por CODE, para melhor visualização do código.
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...