Fórum Pesquisar em arquivo .txt #327165

10/08/2006

0

Preciso pesquisar em um arquivo .txt e copiar a linha onde se localiza a informação e grave esta linha em outro arquivo.txt.

Exemplo:

Arquivo.txt

0000001-83A016205605112326304047556370
0000002-48A019729609121719293352556269
0000003-88A006998610122026323852565864
0000004-42A007622606071922313346486869
0000005-82A011084902042227354043516668
0000006-47A014906004141819363950536163
0000007-87A015688903071823313352556364
0000008-41A006227205091522324151555970
0000009-81A013270207122427384145506265
0000010-41A014250311141523353745545962

Quero pesquisar 0000007-87 e copiar a linha onde ele se encontra para outro arquivo .txt

0000001-83A016205605112326304047556370
0000002-48A019729609121719293352556269
0000003-88A006998610122026323852565864
0000004-42A007622606071922313346486869
0000005-82A011084902042227354043516668
0000006-47A014906004141819363950536163
[b:1c9e6f8d07]0000007-87A015688903071823313352556364[/b:1c9e6f8d07] Copiar esta linha
0000008-41A006227205091522324151555970
0000009-81A013270207122427384145506265
0000010-41A014250311141523353745545962

No outro arquivo .txt (Arquivo1.txt) ficara assim:

Arquivo1.txt

0000007-87A015688903071823313352556364

Grato.


Viggianojr

Viggianojr

Responder

Posts

10/08/2006

Rjun

Carregue seu arquivo em uma TStringList e faça a busca com a função POS. Se o resultado for diferente de 0 jogue essa linha para outra TStringList. No fim do processo, grave a nova TStringList em um arquivo.

var
  Origem, Destino: TStringList;
  i: integer;
begin
  Origem := TStringList.Create;
  Destino := TStringList.Create;
  try
    Origem.LoadFromFile(´ARQUIVO1.TXT´);
    for i := 0 to Origem.Count - 1 do
      if ( Pos(´Texto´, Origem.Strings[i]) <> 0 ) then
        Destino.Add(Origem.Strings[i]);

    if (Destino.Count > 0)
      Destino.SaveToFile(´NomeDoArquivo.Txt´);
  finally
    FreeAndNil(Origem);
    FreeAndNil(Destino);
  end;
end;



Responder

Gostei + 0

10/08/2006

Viggianojr

Rogerio,

Está acontercendo o seguinte erro:

[Error] Unit1.pas(40): ´THEN´ expected but identifier ´Destino´ found
[Error] Unit1.pas(48): Statement expected but end of file found
[Fatal Error] Project1.dpr(5): Could not compile used unit ´Unit1.pas´

Grato

Viggiano


Responder

Gostei + 0

11/08/2006

Rjun

Esqueci o THEN para o IF. Tenho programado muito em C#.

if (Destino.Count > 0) then
      Destino.SaveToFile(´NomeDoArquivo.Txt´); 



Responder

Gostei + 0

11/08/2006

Viggianojr

Caro Rogério,

Estou capturando de um Edit o texto a ser procurado. Só que preciso pesquisar o arquivo de origem(cartelas.002) o capturado no edit e gravá-lo no arquivo destino(cartelas.001) cada pesquisa encontrada(um em cada linha) e voltar para digitar outro. Tipo bd em txt.

Ele esta assim ate agora:

procedure TForm1.Button1Click(Sender: TObject);

var
texto : string[10];
Origem, Destino: TStringList;
i: integer;
begin
texto := Edit1.Text;
Origem := TStringList.Create;
Destino := TStringList.Create;
try
Origem.LoadFromFile(´cartelas.002´);
for i := 0 to Origem.Count - 1 do
if ( Pos(texto, Origem.Strings[i]) <> 0 ) then
Destino.add(Origem.Strings[i]);

if (Destino.Count > 0) then
Destino.SaveToFile(´cartelas.001´);
finally
FreeAndNil(Origem);
FreeAndNil(Destino);
end;
end;

Arquivo origem é: cartelas.002

0000001-83A016205605112326304047556370
0000002-48A019729609121719293352556269
0000003-88A006998610122026323852565864
0000004-42A007622606071922313346486869
0000005-82A011084902042227354043516668
0000006-47A014906004141819363950536163
0000007-87A015688903071823313352556364
0000008-41A006227205091522324151555970
0000009-81A013270207122427384145506265
0000010-41A014250311141523353745545962
0000011-81A011548804112123374244555864
0000012-44A015799107101618354249566566
0000013-84A018820003132426364246565860
0000014-49A006277508141621293648516162
0000015-89A018760903061526293548566769
0000016-43A002170106082027314153565864
0000017-83A006579810111720293543456669
0000018-48A000747001061524404152545869
0000019-88A004380804062126293344466164
0000020-46A006011004082226313653566268
0000021-86A009665907141824293747496465
0000022-40A013346906141527303454556265
0000023-80A016116001021528373946546270
0000024-45A007177302091721293643505962
0000025-85A013775202102628323947565859
0000026-41A016945304071921304245565765
0000027-81A012369908121922294148566063
0000028-44A001536508101723404150566269
0000029-84A017920203071621333748526365
0000030-42A010923006111825303550515965
0000031-82A016370303061921303443495759
0000032-47A019263113141625293347506669
0000033-87A015906311131925314147525870
0000034-41A002985902051627364047555970
0000035-81A017082406071823304148526068
0000036-46A016740307111923303245496667
0000037-86A009944302041619373944525865
0000038-40A007369605112226323945496269
0000039-80A006421003082426293746505960
0000040-49A000111106071820294050546669
0000041-89A015687702141726313548495870
0000042-43A003344803102021354243546567
0000043-83A010799301102427293753555765
0000044-48A014369908112728343952536068
0000045-88A016881507131720394245526266
0000046-42A016219103111920384050535863
0000047-82A017103003041819313651556670
0000048-47A004560408121525334050566670
0000049-87A019663304071526383952556070
0000050-45A008760902061520343552555864

Grato.

Viggiano


Responder

Gostei + 0

14/08/2006

Rjun

Imagino que o arquivo de destino esteja sendo sobrescrito e isso você não quer. Basta você declarar e criar a TStringList de DESTINO fora do metodo do click do seu botão.


Responder

Gostei + 0

15/08/2006

Viggianojr

Rogerio,

Thanks.

Viggiano


Responder

Gostei + 0

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

Aceitar