Alberto Mota Postado Dezembro 25, 2009 Denunciar Share Postado Dezembro 25, 2009 Prezados colegas, ao receber um arquivo retorno não estou conseguindo fazer o devido tratamentoNa linha abaixo:104000000000115012010000010085 A posição de 13 a 21 é data e de 22 a 30 é o valorSendo que o valor ele entende como 10085,00. E não como 100,85 Como fazer esse tratamento para as casas decimais?E também para as datas?Mais uma vez agradeço de antemão. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 25, 2009 Denunciar Share Postado Dezembro 25, 2009 ao receber um arquivo retorno não estou conseguindo fazer o devido tratamentoNa linha abaixo:104000000000115012010000010085A posição de 13 a 21 é data e de 22 a 30 é o valorSendo que o valor ele entende como 10085,00. E não como 100,85 Como fazer esse tratamento para as casas decimais?E também para as datas?Exemplo:procedure TForm1.Button1Click(Sender: TObject); var linha, dat : string; data :TDate; Valor : real; begin linha := '104000000000115012010000010085'; dat := copy(linha,14,8); insert('/',dat,3); insert('/',dat,6); data := strtodate(dat); valor := (strtofloat(copy(linha,22,9))/100); Edit1.Text := datetostr(data); Edit2.Text := floattostr(valor); end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alberto Mota Postado Dezembro 26, 2009 Autor Denunciar Share Postado Dezembro 26, 2009 Jhonas, mais uma vez, obrigado. Até no Natal voce se prontifica em ajudar.Muito sucesso à você, pois merece.Adaptei o seu código e era de fato o que precisava.Segue abaixo o código completo para quem precise um dia.Um abraço.procedure TFrmArquivoRetorno.BitBtn1Click(Sender: TObject);varfArq: TextFile;Caminho: string;Linha: string;mTexto: TStringList;i: integer;valor1, valor2 : string;somatotal : Real;somatotal2 : String;dat :string;data :TDate;Valor : real;beginif Edit1.Text = '' thenBeginstatusbar1.Panels[0].Text := ' Selecione o arquivo retorno!';BitBtn4.setfocus;exit;End;Caminho := Edit1.Text;AssignFile(fArq, Caminho);ReSet(fArq);mTexto := TStringList.Create;trymTexto.LoadFromFile(Caminho);pb.Max := mTexto.Count - 1;i := 0;finallymTexto.Free;end;while not Eof(fArq) dobeginReadln(farq, linha);Caption := 'Lendo Linha: ' + IntToStr(i) + ' de: ' + IntToStr(pb.Max);dat := copy(linha,14,8);insert('/',dat,3);insert('/',dat,6);data := strtodate(dat);valor := (strtofloat(copy(linha,22,10))/100);AdoQuery1.Open;AdoQuery1.Append;Adoquery1.edit;ADOQuery1.FieldbyName('banco').Value := Trim(Copy(Linha, 1, 3));ADOQuery1.FieldbyName('numero').Value := Trim(Copy(Linha, 4, 13));ADOQuery1.FieldbyName('dt').Value := datetostr(data);ADOQuery1.FieldbyName('vr').Value := valor;ADOQuery1.Post;Inc(i);pb.Position := pb.Position + 1;Application.ProcessMessages;Next;AdoQuery1.close;AdoQuery1.Open;pb.Visible := false;Label1.Caption := 'Total de registros importados: '+ IntToStr(AdoQuery1.Recordcount);somaEnd;End; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alberto Mota Postado Dezembro 26, 2009 Autor Denunciar Share Postado Dezembro 26, 2009 Jhonas, desculpe o incômodo, mas nessa sequencia1040000015894150120100000000050A posição 3 até 11 = 0000015894Gostaria que fosse desprezado os zeros a esquerda e se armazenasse apenas 15894.Como soluciono esse problema?Agradeço a valiosa ajuda. Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alberto Mota Postado Dezembro 26, 2009 Autor Denunciar Share Postado Dezembro 26, 2009 Por favor desconsidere o último post.Era apenas batalhar um pouco mais no códigoCriei uma variavel numero integere essa linha:numero := strtoint(copy(linha,4,10));E pronto!Tópico Resolvido.Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Alberto Mota
Prezados colegas,
ao receber um arquivo retorno não estou conseguindo fazer o devido tratamento
Na linha abaixo:
104000000000115012010000010085
A posição de 13 a 21 é data e de 22 a 30 é o valor
Sendo que o valor ele entende como 10085,00. E não como 100,85
Como fazer esse tratamento para as casas decimais?
E também para as datas?
Mais uma vez agradeço de antemão.
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.