Eder Postado Março 3, 2017 Denunciar Share Postado Março 3, 2017 Ola, bom dia Uso este código para impostar dados de um arquivo txt separado por ponto e virgula(;) Table1.FieldByName('sigla_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('numero_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('ctrc/subcontr').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('nro_chave_acesso_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('situacao_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Minha dificuldade é que toda hora é incluido um campo novo no arquivo txt e o meu aplicativo da erro, pois ele não reconhece o campo novo incluso. Teria como fazer na hora de importar pular este campo novo? só importando o que realmente eu quero? Obrigado, Abs Eder Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Março 3, 2017 Denunciar Share Postado Março 3, 2017 esse arquivo tem cabeçalho ? porque o que vc pode fazer é verificar o campo antes de passar para a tabela Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Março 3, 2017 Autor Denunciar Share Postado Março 3, 2017 sim tem cabeçalho com o nome dos campos, separado também por ponto e virgula. segue o inicio do código para vc ver se consegue me dar uma ajudinha com o pequeno exemplo. Assignfile(Txt,(ExtractFilePath(Application.ExeName))+'\CTRC.TXT');//caminho do arquivo CSV Reset(Txt); ArqLido := 0; ArqSize := FileSize(txt) *128; // *** FileSize assume blocos de 128 quando não é arquivo "tipado" gauge1.MaxValue := 104; // *** equivale a 100 +4 valores que você incrementa na mão Linhas := 0; While not Eoln(Txt) do begin Readln(Txt,Entrada); //miachael abaixo ArqLido := ArqLido +Length(Entrada)+2; //*** este 2 = CR+LN (presumido) Gauge1.Progress := Trunc(ArqLido/ArqSize *100); // *** progress chegará no máximo a 100 (%) // Inc(Linhas); If Linhas > 3 then //aqui verifica e desconcidera AS 4 primeiras linhas do CSV If (Copy(Entrada, 1, 1) = '3') then //AQUI CONSIDERA SOMENTE AS LINHAS QUE TEM O CAMPO 1 = 3 begin Table1.Insert; Table1.FieldByName('1').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('sigla_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('numero_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('sigla_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1 Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Eder
Ola, bom dia
Uso este código para impostar dados de um arquivo txt separado por ponto e virgula(;)
Table1.FieldByName('sigla_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('numero_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('ctrc/subcontr').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('nro_chave_acesso_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('situacao_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada));
Minha dificuldade é que toda hora é incluido um campo novo no arquivo txt e o meu aplicativo da erro, pois ele não reconhece o campo novo incluso.
Teria como fazer na hora de importar pular este campo novo? só importando o que realmente eu quero?
Obrigado, Abs Eder
Link para o comentário
Compartilhar em outros sites
2 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.