Out of Bounds na troca de delimitador no ExtractStrings.

Delphi

06/11/2007

Possuo um arquivo separado por virgula que estou jogando pra uma base de dados, mas como existem campos como ´descrição´ que existem uma vírgula intena no campo o sistema de tornou impraticavel.
então troquei o delimitador para ´;´, e mais nada mas o sistema está dando erro OUT OF BOUNDS
ou seja, com virgula como delimitador funciona mas não resolve, mas com ´ponto e virgula´ não funciona

uso a função ExtractStrings no Delphi 7

preciso de ajuda urgente.


Grato


Tecrogerio

Tecrogerio

Curtidas 0

Respostas

Massuda

Massuda

06/11/2007

Mostre seu código.


GOSTEI 0
Tecrogerio

Tecrogerio

06/11/2007

Caro Massuda, segue código:



While Not Eof (ArqOrigem) do begin
ReadLn(ArqOrigem,linha);
Texto.Clear;


{ extrai da linha os valores delimitados
por virgula e ignora os espaços}
ExtractStrings([´;´],[ ],Pchar(linha),Texto);
Texto.Strings[0]; // cnpj
Texto.Strings[1]; // Numero da Nota
Texto.Strings[2]; // data
Texto.Strings[3]; // Valor Total
Texto.Strings[4]; // tipo de venda
Texto.Strings[5]; // CFOP
texto.Strings[6]; // Descricão Item
texto.Strings[7]; // Complemento Item
texto.Strings[8]; // Valor Unitario



dados do arquivo de origem:
005.942.454-00 ;;154902;02012006;5144.15;1;5.101;VILLAGE WHITE ;40x40 ER A ;21.20;;
005.942.454-00 ;;154903;02012006;1293.56;1;5.101;ATLANTIS GELO ;40X40 ER A ;21.20;;
005.942.454-00 ;;154904;02012006;5794.05;1;5.101;VERMONT BIANCO ;50X50 ER A ;26.25;;
05.765.889/0001-11 ;;154905;02012006;11576.49;1;5.101;LUX ROYAL ;10X10 A T ;11.70;;
05.765.889/0001-11 ;;154905;02012006;11576.49;1;5.101;LUX PESSEGO ;10X10 A T ;10.70;;


Grato


GOSTEI 0
Massuda

Massuda

06/11/2007

Eu acho que devia ser assim...
ExtractStrings([´;´],[´ ´],Pchar(linha),Texto);
...do jeito que você fez, nenhum branco está definido (segundo parametro), não sei como ExtractStrings() se comporta nesse caso.


GOSTEI 0
Massuda

Massuda

06/11/2007

Outra coisa...

Verifique se depois do ExtractStrings(), Texto.Count >= 9. Se você ler alguma linha sem o separador pt-vg (ou vazia), provavelmente Texto.Count = 0.


GOSTEI 0
Tecrogerio

Tecrogerio

06/11/2007

Caro Massuda

Tentei usar o espaço em branco, mas dava pau pois ele separava a descrição do item como um outro item o que não é o caso, sem o espaço o resto é normal.
o arquivo tmb não tem linhas em branco

grato


GOSTEI 0
Tecrogerio

Tecrogerio

06/11/2007

Amigo, massuda resolvi o problema
algumas linhas do arquivo de origem estavam fora do padrao de importação o que gerava o erro.

Muito agradecido


GOSTEI 0
POSTAR