Fórum Comparar 2 arquivos Texto com o mesmo Layout #296604

22/09/2005

0

Bom tenho 2 arquivos Texto (Arquivo1.txt, Arquivo2.txt)com o mesmo layout e preciso comparar para saber se o Arquivo2 possuia as mesmas linhas que o Arquivo1.

Se no Arquivo1 existir alguma linha que não exista no Arquivo2, então criar um Arquivo3.txt contendo essas linhas.


Fabiano Góes

Fabiano Góes

Responder

Posts

22/09/2005

Bmetric

Carregue o Arq2 num TStringList, leia o Arq1 e utilize o IndexOf da TStringList.


Responder

Gostei + 0

22/09/2005

Fabiano Góes

Por favor, você poderia me dar um exemplo ?


Responder

Gostei + 0

22/09/2005

Bmetric

var f:TextFile; SL:TStringList; s:String;
begin
  SL := TStringList.Create;
  try
    SL.LoadFromFile(´c:\Arq2.txt´);
    AssignFile(f, ´c:\Arq1.txt´);
    Reset(f);
    While not Eof(f) do
    begin
      Readln(f, s);
      if SL.IndexOf(s) < 0 then
      begin
        // Arq1 não existe em Arq2
      end;
    end;
    CloseFile(f);
  finally
    SL.Free;
  end;
end;



Responder

Gostei + 0

22/09/2005

Fabiano Góes

bmetric, Valeu ai brother

exatamente o que eu precisava !!!!!!

:lol:


Responder

Gostei + 0

22/09/2005

Rjun

Usando somente TStringList.

var
  Base,
  AComparar,
  Resultado: TStringList;
  i: integer; 
begin
  Base := TStringList.Create;
  AComparar := TStringList.Create;
  Resultado := TStringList.Create;
  try
    Base.LoadFromFile(´c:\Arq2.txt´);
    AComparar.LoadFromFile(´c:\Arq1txt´);
    
    for i := 0 to AComparar.Count do
      if Base.IndexOf(AComparar.Strings[i]) < 0 then
        Resultados.Strings.Add(Base.Strings[i]);

    Resultados.SaveToFile(´c:\arquivoerros.txt´);
  finally
    FreeAndNil(Base);
    FreeAndNil(AComparar);
    FreeAndNil(Resultado);
  end;




Responder

Gostei + 0

22/09/2005

Fabiano Góes

Rjun valeu cara, estou preecisando mesmo aprender mais sobre TStringList.

Cara estou achando muito legal o que se pode fazer com TStringList.

a propósito se você tiver alguns exemplos de Utilização de TStringList epuder me mandar eu agradeceria muito . :lol:

fabianogoes@ig.com.br


de qualquer forma você já me ajudou muito !!!!!


Responder

Gostei + 0

22/09/2005

Bmetric

for i := 0 to AComparar.Count do
Este [b:613812812d]for[/b:613812812d] está errado colega.


Responder

Gostei + 0

22/09/2005

Rjun

for i := 0 to AComparar.Count do
Este [b:5b781e18ed]for[/b:5b781e18ed] está errado colega.


Verdade. O correto é :

for i := 0 to AComparar.Count -1 do



Responder

Gostei + 0

22/09/2005

Rjun

for i := 0 to AComparar.Count do
Este [b:e8711b4941]for[/b:e8711b4941] está errado colega.


Não se sinta encabulado para postar a correção.


Responder

Gostei + 0

22/09/2005

Bmetric

[quote:25983182da=´Fabiano Góes´]Cara estou achando muito legal o que se pode fazer com TStringList.[/quote:25983182da]Veja tb as propriedades: Names, Values,
Duplicates, CaseSensitive.


Responder

Gostei + 0

23/09/2005

Fabiano Góes

Ah sim galera, desculpem eu já tinha modificado o For, e esqueci de avisar , realmente funcionou assim :

for i := 0 to AComparar.Count -1 do


Valeu a atenção pessoal :wink:


Responder

Gostei + 0

23/09/2005

Fabiano Góes

ai galera se alguem precisar aproveitar o código ficou assim :


var
    Entrada, Saida, Resultado : TStringList;
    i : Integer;
begin
    Entrada := TStringList.Create;
    Saida   :=  TStringList.Create;
    Resultado :=  TStringList.Create;

    Entrada.LoadFromFile(´c:\arqEnt.txt´);
    Saida.LoadFromFile(´c:\arqSai.txt´);

    for i := 0 to Entrada.Count - 1 do  begin
      if saida.IndexOf(Entrada.Strings[i]) < 0 then
        Resultado.Add(Entrada.Strings[i]);

    end;
         Resultado.SaveToFile(´c:\NProces.txt´);




deixando os creditos aos colegas( Rjun, bmetric ) é claro !!

valeu brothers


Responder

Gostei + 0

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

Aceitar