PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Problemas com índice da String List #405903

02/08/2011

0

Olá pessoal.
Recentemente postei aqui uma dúvida sobre importação de arquivo texto delimitado por barras.(https://www.devmedia.com.br/forum/viewtopic.asp?id=405630)
Com a ajuda dos colegas, obtive sucesso, usando a classe TStrigList.
Agora, estou enfrentando outro problema. Acontece que ao pegar as informações no arquivo, percebi que se existir uma delimitação vazia (||) o índice muda.
Por exemplo:
Quebra.Clear;              Readln(Txt,Entrada);              ExtractStrings(['|'],[ ],Pchar(Entrada),Quebra);
     if Quebra.Strings[0] = 'DDP'  Then           Begin                                  Importa_SEGURADO.Append;                Importa_SEGURADO.FieldValues['NOME']:=  Quebra.Strings[1];                Importa_SEGURADO.FieldValues['ENDERECO']:= Quebra.Strings[2];               Importa_SEGURADO.FieldValues['BAIRRO']:= Quebra.Strings[3];               Importa_SEGURADO.FieldValues['CIDADE']:= Quebra.Strings[4];               Importa_SEGURADO.FieldValues['UF']:= Quebra.Strings[5];               Importa_SEGURADO.FieldValues['CEP']:= Quebra.Strings[6];               Importa_SEGURADO.FieldValues['CPF']:= Quebra.Strings[7];               Importa_SEGURADO.FieldValues['IDENTIDADE']:= Quebra.Strings[8];               Importa_SEGURADO.Post;             end;

ARQUIVO:
|DDP|JOSÉ SANTOS COBOL|RUA TRINTA, 125, AP 304|SERRA|SALGUEIRO|MG|31995127|777.777.777-77|MG8888|
|DDP|MARIA SHARP|AVENIDA CABRAL DE SÁ, 42||CANTAREIRA|MG|38460028|999.999.999.999-99|MG444|
Na segunda linha do arquivo, o bairro está em branco. É aqui que ocorre o problema. Como são 9 os índices, de 0 a 8, ocorre que na segunda linha, a função só retorna 8, de 0 a 7. No lugar do bairro, que está faltando, ele grava a cidade e assim sucessivamente.
Quando chega em  Quebra.Strings[8] retorna erro de índice.
Pelo que li, a função desconsidera os espaços em branco, mas também, pelo que parece, não os conta, para efeito de índice.
Alguém sabe como resolver esse problema?
 




João_sena

João_sena

Responder

Posts

03/08/2011

João_sena

Bom  pessoal, resolvi o problema.
Lembrei da função StringReplace, que substitui um grupo de  strig por outro.
No caso, é só substituir '||' por  '|INEXISTENTE|',  por exemplo, e não teremos mais problemas com os índices da StringList.
Ficou assim:
var Arquivo: String
  Begin
      Arquivo:= StringReplace(Entrada, '||', '|INEXISTENTE|', [rfIgnoreCase, rfReplaceAll]);
        Quebra.Clear;                      ExtractStrings(['|'],[ ],Pchar(Arquivo),Quebra);
         if Quebra.Strings[0] = 'DDP'  Then 
        etc, etc..........

 Espero que isso possa ajudar alguém.            
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar