Fórum de Txt para Firebird #170482

21/07/2003

0

Ola
Pessoal, :D

to tentando importar as informações de um arquvo txt
para um banco de Dados em Firebird

Bom o Meu problema está em copiar do txt
as informações que estão entre barra |


por Exemplo o txt esta assim

1|1|1|123|56A1|1|...
1|1|2|123|56A2|1|...
1|1|3|123|56A3|1|...
1|2|1|124|56A1|1|...

102|1|1|123|56A2|1|...
10|1|1|123|56A2|1|...
1012|1|1|123|56A2|1|...

e assim por diante.

Pergunta, como faço para pegar a posição da proxima Barra |,
sendo que a função pos me retorna apenas a primeira barra. :?:

Desde já Agradeço a atenção de Todos. :wink:


Wagnerps

Wagnerps

Responder

Posts

22/07/2003

Basilio.sp

Caro wagnerps,

Incrível! Este arquivo é idêntico a um que gero pra uma grande rede varejista...

Vamos lá...

Como o POS só nos retorna a posição do primeiro delimitador, costumo fazer o seguinte: obtenho a posição do primeiro delimitador -1, extraio o q preciso, deleto a string até a posição do delimitador e repito o processo.

Como utilizo muito arquivos textos com tudo quanto é tipo de delimitador, criei a função que listo abaixo. É necessário que o arquivo tenha um delimitador no final de cada linha para que a função funcione corretamente (mas você pode adaptar o código...).

Para utiliza-la, vamos considerar que voce esteja lendo as linhas do arquivo texto em uma variável chamada txtLine, utilizando o separador pipe (´|´) e queira extrair o primeiro campo na variável BANCO e o segundo em COD_CLI. Bastaria fazer o seguinte:

BANCO := RetornaCampo (txtLine, ´|´, 1);
COD_CLI := RetornaCampo (txtLine, ´|´, 2);

---

Function RetornaCampo (const strField: String; const Separador: Char; const FieldNo: Integer): ShortString;
var
Posicao : Integer;
Contador: Integer;
Retorno : String;
TEMPOR : String;
begin

TEMPOR := strField;

For Contador := 1 to FieldNo do
Begin
Retorno := Copy (TEMPOR, 1, Pos (Separador, TEMPOR) -1);
TEMPOR := Copy (TEMPOR, Pos (Separador, TEMPOR) + 1, Length (TEMPOR));
end;

Result := Retorno;

end;

---


Responder

Gostei + 0

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

Aceitar