Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

etspaz

ler arquivo texto com espaço como delimitador e valor de coluna também

Recommended Posts

Boa tarde, pessoal!

 

To fazendo importação de arquivos txt para uma base, beleza quando o delimitador é ;.

Mas, alguns tem espaços como delimitadores, então usei um stringlist com delimiter...

O problema é que alguns campos deste arquivo também tem espaço e a rotina separa como outro campo.

Segue trcho do codigo:

 

AssignFile(x,nm_arq);

Reset(x);

k:= TStringList.Create();

k.Delimiter:= ' ';

while not Eof(x) do

begin

Readln(x,texto);

if texto <> '' then

begin

deli.DelimitedText:= texto;

ShowMessage(k[0]);

ShowMessage(k[1]);

ShowMessage(k[2]);

ShowMessage(k[3]);

ShowMessage(k[4]);

ShowMessage(k[5]);

ShowMessage(k[6]);

ShowMessage(k[7]);

ShowMessage(k[8]);

ShowMessage(k[9]);

ShowMessage(k[10]);

ShowMessage(k[11]);

ShowMessage(k[12]);

ShowMessage(k[13]);

end;

 

Alguém sabe me dizer como fazer para a rotina identificar quando o espaço faz parte do conteudo do campo, exemplo: Joao da Silva.

desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sugestão que lhe dou nesse tipo de caso é que trabalhe com tamanhos fixos ou defina um delimitador único e force seu cliente a usá-lo sempre (de preferência, que não seja um tipo de dado usado dentro dos campos que está lendo - caso do espaço em branco, que é um péssimo delimitador para arquivos que tem campos de nome e endereço).

 

Se você for se orientar baseando sua regra no tamanho fixo do campo, você pode definir que sua coluna nome terá 50 caracteres começando do 0 por exemplo, seguida depois da coluna endereço com 50 caracteres começando logo após o nome, etc... isso te facilitaria a vida, pois seria só pegar no seu programa e usar o copy no range de cada coluna para ter os dados.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa valeu Chrnos!

É exatamente uma da duas opções ,definir tamanho fixo nos campos ou ; como delimitador que estou tentando conseguir.

O problema é que a comunicação com gera os arquivos é dificil, mas terá que ser alterado o layout:

ou tamanho fixo ou delimitador diferente de espaço.

Atualmente eles usam muito o excel, e formatam depois de vincular o arquivo, por isso nunca se preocuparam em definir um layout correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está lendo os dados de um arquivo texto ou uma planilha excel? Se for uma planilha excel, você pode trabalhar lendo coluna a coluna, linha a linha, e manipular os dados como quiser. Se for txt, o melhor é formatar o padrão de entrada e recusar tudo o que vier fora dele, senão só vai ter dor de cabeça.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.