Fórum Manipulação de Arquivo TXT #522885
15/06/2015
0
Bom dia pessoal, sou novo aqui no fórum e estou com uma grande dificuldade, estou manipulando um arquivo .TXT e estou com uma dificuldade quando vou salvar o arquivo .TXT.
Estou fazendo o seguinte, pego o arquivo .TXT jogo numa tabela temporária manipulo o arquivo e depois eu salvo em um arquivo .TXT, o problema é que eu preciso fazer a verificação da primeira String do primeiro campo e se começar com 1, 4 ou 9 preciso que seja salvo um valor e se for qualquer outro número salve outro valor. Abaixo meu código e se alguém puder dar uma ajuda será muito bem vinda.
var
texto : TStringlist;
i : Integer;
arquivo:textfile;
SearchOptions: TLocateOptions;
Cod1 : String;
Begin
SearchOptions:=[loCaseInsensitive,loPartialKey];
Cds.Open;
texto := TStringlist.Create;
texto.LoadFromFile(Edit1.Text);
texto.Text := trim(texto.Text);
for i := 2 to texto.Count -1 do
begin
Cds.Insert;
CodigoDigito.AsString := Copy(texto[i],1,31);
Classificacao.AsString := Copy(texto[i],32,41);
Descricao.AsString := Copy(texto[i],43,103);
Grau.AsString := Copy(texto[i],103,104);
Sigla.AsString := Copy(texto[i],105,108);
CodigoDigito.AsString := TrimRight(CodigoDigito.AsString);
CodigoDigito.AsString := TrimLeft(CodigoDigito.AsString);
Classificacao.AsString := TrimRight(Classificacao.AsString);
Classificacao.AsString := TrimLeft(Classificacao.AsString);
Descricao.AsString := TrimRight(Descricao.AsString);
Descricao.AsString := TrimLeft(Descricao.AsString);
Grau.AsString := TrimRight(Grau.AsString);
Grau.AsString := TrimLeft(Grau.AsString);
CodigoDigito.AsString := Remove(CodigoDigito.AsString);
Grau.AsString := Remove(Grau.AsString);
CodigoDigito.AsString := StrZero(CodigoDigito.AsString,7);
Cds.FieldByName('Codigo').AsString := 'D000000000000+';
Cds.FieldByName('Codigo2').AsString := 'C000000000000+';
Cds.Post
end;
texto.Free;
Showmessage('Arquivos Copiados');
//Gerando o arquivo Destino
begin
rewrite(arquivo,'C:\Destino.txt');
writeln(arquivo);
cds.first;
while not cds.eof do begin
if cds.locate('classificacao','1 or 4 or 9',SearchOptions) then
begin
Cod1 := cds.fieldbyname('CODIGO2').AsString;
end
else
begin
Cod1 := cds.fieldbyname('CODIGO').AsString;
end;
append(arquivo);
writeln(arquivo,
FormatMaskText('##########;0',cds.fieldbyname('CLASSIFICACAO').asstring)+' '+
FormatMaskText('0000000;7',cds.fieldbyname('CODIGODIGITO').asstring)+''+
FormatMaskText('#############################',cds.fieldbyname('DESCRICAO').asstring)+''+
FormatMaskText('#',cds.fieldbyname('GRAU').asstring)+''+
FormatMaskText('####',cds.fieldbyname('SIGLA').asstring)+''+
// FormatMaskText('##############',cds.fieldbyname('CODIGO2').asstring));
FormatMaskText('##############',cod1));
cds.next;
end;
closefile(arquivo);
Showmessage('Arquivos Manipulados');
end;
end;
Estou fazendo o seguinte, pego o arquivo .TXT jogo numa tabela temporária manipulo o arquivo e depois eu salvo em um arquivo .TXT, o problema é que eu preciso fazer a verificação da primeira String do primeiro campo e se começar com 1, 4 ou 9 preciso que seja salvo um valor e se for qualquer outro número salve outro valor. Abaixo meu código e se alguém puder dar uma ajuda será muito bem vinda.
var
texto : TStringlist;
i : Integer;
arquivo:textfile;
SearchOptions: TLocateOptions;
Cod1 : String;
Begin
SearchOptions:=[loCaseInsensitive,loPartialKey];
Cds.Open;
texto := TStringlist.Create;
texto.LoadFromFile(Edit1.Text);
texto.Text := trim(texto.Text);
for i := 2 to texto.Count -1 do
begin
Cds.Insert;
CodigoDigito.AsString := Copy(texto[i],1,31);
Classificacao.AsString := Copy(texto[i],32,41);
Descricao.AsString := Copy(texto[i],43,103);
Grau.AsString := Copy(texto[i],103,104);
Sigla.AsString := Copy(texto[i],105,108);
CodigoDigito.AsString := TrimRight(CodigoDigito.AsString);
CodigoDigito.AsString := TrimLeft(CodigoDigito.AsString);
Classificacao.AsString := TrimRight(Classificacao.AsString);
Classificacao.AsString := TrimLeft(Classificacao.AsString);
Descricao.AsString := TrimRight(Descricao.AsString);
Descricao.AsString := TrimLeft(Descricao.AsString);
Grau.AsString := TrimRight(Grau.AsString);
Grau.AsString := TrimLeft(Grau.AsString);
CodigoDigito.AsString := Remove(CodigoDigito.AsString);
Grau.AsString := Remove(Grau.AsString);
CodigoDigito.AsString := StrZero(CodigoDigito.AsString,7);
Cds.FieldByName('Codigo').AsString := 'D000000000000+';
Cds.FieldByName('Codigo2').AsString := 'C000000000000+';
Cds.Post
end;
texto.Free;
Showmessage('Arquivos Copiados');
//Gerando o arquivo Destino
begin
rewrite(arquivo,'C:\Destino.txt');
writeln(arquivo);
cds.first;
while not cds.eof do begin
if cds.locate('classificacao','1 or 4 or 9',SearchOptions) then
begin
Cod1 := cds.fieldbyname('CODIGO2').AsString;
end
else
begin
Cod1 := cds.fieldbyname('CODIGO').AsString;
end;
append(arquivo);
writeln(arquivo,
FormatMaskText('##########;0',cds.fieldbyname('CLASSIFICACAO').asstring)+' '+
FormatMaskText('0000000;7',cds.fieldbyname('CODIGODIGITO').asstring)+''+
FormatMaskText('#############################',cds.fieldbyname('DESCRICAO').asstring)+''+
FormatMaskText('#',cds.fieldbyname('GRAU').asstring)+''+
FormatMaskText('####',cds.fieldbyname('SIGLA').asstring)+''+
// FormatMaskText('##############',cds.fieldbyname('CODIGO2').asstring));
FormatMaskText('##############',cod1));
cds.next;
end;
closefile(arquivo);
Showmessage('Arquivos Manipulados');
end;
end;
Luciano Benito
Curtir tópico
+ 0
Responder
Posts
19/06/2015
Dorivan Sousa
while not cds.eof do begin
if cds.locate(''classificacao'',''1 or 4 or 9'',SearchOptions) then
begin
Cod1 := cds.fieldbyname(''CODIGO2'').AsString;
end
else
begin
Cod1 := cds.fieldbyname(''CODIGO'').AsString;
end;
end;
nao teria algo estranho ai, ja que vc ta fazendo um loop percorrendo todos os registros do cds, na hora q executar o locate nao vai interferir?
Responder
Gostei + 0
24/06/2015
Luciano Benito
Realmente estava errado meu codigo, consegue resolver, obrigado a todos e abaixo o procedimento que funcionou.
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
texto : TStringlist;
i : Integer;
arquivo:textfile;
SearchOptions: TLocateOptions;
Cod2, Cod3 : String;
Begin
Cds.Open;
texto := TStringlist.Create;
texto.LoadFromFile(Edit1.Text);
texto.Text := trim(texto.Text);
for i := 2 to texto.Count -1 do
begin
Cds.Insert;
Id.AsInteger := cds.RecordCount+1;
Edit2.text := Id.asstring;
CodigoDigito.AsString := Copy(texto[i],1,31);
Classificacao.AsString := Copy(texto[i],32,41);
Descricao.AsString := Copy(texto[i],43,103);
Grau.AsString := Copy(texto[i],103,104);
Sigla.AsString := Copy(texto[i],105,108);
CodigoDigito.AsString := TrimRight(CodigoDigito.AsString);
CodigoDigito.AsString := TrimLeft(CodigoDigito.AsString);
Classificacao.AsString := TrimRight(Classificacao.AsString);
Classificacao.AsString := TrimLeft(Classificacao.AsString);
Descricao.AsString := TrimRight(Descricao.AsString);
Descricao.AsString := TrimLeft(Descricao.AsString);
Grau.AsString := TrimRight(Grau.AsString);
Grau.AsString := TrimLeft(Grau.AsString);
CodigoDigito.AsString := Remove(CodigoDigito.AsString);
Grau.AsString := Remove(Grau.AsString);
CodigoDigito.AsString := StrZero(CodigoDigito.AsString,7);
Cds.FieldByName('Codigo2').AsString := 'D000000000000+';
Codigo.AsString := Cds.FieldByName('Classificacao').AsString;
Cds.Post
end;
texto.Free;
//Gerando o arquivo Destino
begin
Destino.Title := 'Salvar Arquivo de Destino';
Destino.DefaultExt := 'txt';
Destino.Filter := '.txt';
Destino.FileName := 'Destino.txt';
Cod3 := ' ';
If Destino.Execute then
ExtractFilename(Destino.FileName);
rewrite(arquivo, 'Destino.txt' );
writeln(arquivo);
cds.First;
while not cds.Eof do begin
if CDS.FieldByName('Codigo').AsString = '1' then
Cod2 := 'D000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '2' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '3' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '4' then
Cod2 := 'D000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '5' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '6' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '7' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '8' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '9' then
Cod2 := 'D000000000000+' ;
append(arquivo);
writeln(arquivo,
FormatMaskText('###########;10',cds.fieldbyname('CLASSIFICACAO').asstring)+' '+
FormatMaskText('0000000;7',cds.fieldbyname('CODIGODIGITO').asstring)+''+
FormatMaskText('##############################',cds.fieldbyname('DESCRICAO').asstring)+''+
FormatMaskText('#',cds.fieldbyname('GRAU').asstring)+''+
FormatMaskText('#####',cds.fieldbyname('SIGLA').asstring)+''+
FormatMaskText('##############',cod2)+''+
FormatMaskText('########################', cod3));
cds.next;
end;
closefile(arquivo);
Showmessage('Arquivos Manipulados com Sucesso!!!');
end;
//Fim
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
texto : TStringlist;
i : Integer;
arquivo:textfile;
SearchOptions: TLocateOptions;
Cod2, Cod3 : String;
Begin
Cds.Open;
texto := TStringlist.Create;
texto.LoadFromFile(Edit1.Text);
texto.Text := trim(texto.Text);
for i := 2 to texto.Count -1 do
begin
Cds.Insert;
Id.AsInteger := cds.RecordCount+1;
Edit2.text := Id.asstring;
CodigoDigito.AsString := Copy(texto[i],1,31);
Classificacao.AsString := Copy(texto[i],32,41);
Descricao.AsString := Copy(texto[i],43,103);
Grau.AsString := Copy(texto[i],103,104);
Sigla.AsString := Copy(texto[i],105,108);
CodigoDigito.AsString := TrimRight(CodigoDigito.AsString);
CodigoDigito.AsString := TrimLeft(CodigoDigito.AsString);
Classificacao.AsString := TrimRight(Classificacao.AsString);
Classificacao.AsString := TrimLeft(Classificacao.AsString);
Descricao.AsString := TrimRight(Descricao.AsString);
Descricao.AsString := TrimLeft(Descricao.AsString);
Grau.AsString := TrimRight(Grau.AsString);
Grau.AsString := TrimLeft(Grau.AsString);
CodigoDigito.AsString := Remove(CodigoDigito.AsString);
Grau.AsString := Remove(Grau.AsString);
CodigoDigito.AsString := StrZero(CodigoDigito.AsString,7);
Cds.FieldByName('Codigo2').AsString := 'D000000000000+';
Codigo.AsString := Cds.FieldByName('Classificacao').AsString;
Cds.Post
end;
texto.Free;
//Gerando o arquivo Destino
begin
Destino.Title := 'Salvar Arquivo de Destino';
Destino.DefaultExt := 'txt';
Destino.Filter := '.txt';
Destino.FileName := 'Destino.txt';
Cod3 := ' ';
If Destino.Execute then
ExtractFilename(Destino.FileName);
rewrite(arquivo, 'Destino.txt' );
writeln(arquivo);
cds.First;
while not cds.Eof do begin
if CDS.FieldByName('Codigo').AsString = '1' then
Cod2 := 'D000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '2' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '3' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '4' then
Cod2 := 'D000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '5' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '6' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '7' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '8' then
Cod2 := 'C000000000000+' ;
if CDS.FieldByName('Codigo').AsString = '9' then
Cod2 := 'D000000000000+' ;
append(arquivo);
writeln(arquivo,
FormatMaskText('###########;10',cds.fieldbyname('CLASSIFICACAO').asstring)+' '+
FormatMaskText('0000000;7',cds.fieldbyname('CODIGODIGITO').asstring)+''+
FormatMaskText('##############################',cds.fieldbyname('DESCRICAO').asstring)+''+
FormatMaskText('#',cds.fieldbyname('GRAU').asstring)+''+
FormatMaskText('#####',cds.fieldbyname('SIGLA').asstring)+''+
FormatMaskText('##############',cod2)+''+
FormatMaskText('########################', cod3));
cds.next;
end;
closefile(arquivo);
Showmessage('Arquivos Manipulados com Sucesso!!!');
end;
//Fim
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)