Stringlist: Varrer o string...Várias vezes!
Olá Pessoal.
Precisava de varrer um stringlist várias vezes até achar a condição informada. No caso, quero copiar uma ´FAIXA´ de códigos pro meu banco de dados. Então eu informo do Número 1 ao Número 10 por exemplo.
Do jeito que eu tou usando (POS.... <> 0) ele acha só o primeiro e pára. Não Consigo fazê-lo continuar lendo o Stringlist e ir copiando os números da sequência informada.
Se alguém puder me dar uma dica, eu agradeço!
Abraços. :D
Precisava de varrer um stringlist várias vezes até achar a condição informada. No caso, quero copiar uma ´FAIXA´ de códigos pro meu banco de dados. Então eu informo do Número 1 ao Número 10 por exemplo.
Do jeito que eu tou usando (POS.... <> 0) ele acha só o primeiro e pára. Não Consigo fazê-lo continuar lendo o Stringlist e ir copiando os números da sequência informada.
Se alguém puder me dar uma dica, eu agradeço!
Abraços. :D
Microbios
Curtidas 0
Respostas
Fabiano Góes
01/11/2007
Olá Pessoal.
Precisava de varrer um stringlist várias vezes até achar a condição informada. No caso, quero copiar uma ´FAIXA´ de códigos pro meu banco de dados. Então eu informo do Número 1 ao Número 10 por exemplo.
Do jeito que eu tou usando (POS.... <> 0) ele acha só o primeiro e pára. Não Consigo fazê-lo continuar lendo o Stringlist e ir copiando os números da sequência informada.
Se alguém puder me dar uma dica, eu agradeço!
Abraços. :D
eu não entendi essa varredura, você quer varrer todas as linhas ou todas as posições de uma determinada linha ?
GOSTEI 0
George_piaulino
01/11/2007
Precisava de varrer um stringlist várias vezes até achar a condição informada. No caso, quero copiar uma ´FAIXA´ de códigos pro meu banco de dados. Então eu informo do Número 1 ao Número 10 por exemplo.
Do jeito que eu tou usando (POS.... <> 0) ele acha só o primeiro e pára. Não Consigo fazê-lo continuar lendo o Stringlist e ir copiando os números da sequência informada.
Se vc diz que existem faixas com vários códigos na stringlist, creio este código para tratar a linha irá te ajudar.....
var
sLista_cod, Scod:widestring;
begin
//slista_cod := suastringlist.Strings[Numero da linha escolhida];
slista_cod := ´cod 1; cod 2; cod 3; cod 4;´;
scod:=´´;
while length(slista_cod) > 0 do
begin
scod:=trim(copy(slista_cod,1,pos(´;´,slista_cod)-1));
delete(slista_cod,1,pos(´;´,slista_cod));
if trim(scod) > ´´ then
begin
//seu codigo aqui
end;
end;
GOSTEI 0
Microbios
01/11/2007
eu não entendi essa varredura, você quer varrer todas as linhas ou todas as posições de uma determinada linha ?
[b:0aa34e8aa9]Fabiano[/b:0aa34e8aa9]
É um cadastro de Clientes que eu tenho que importar os clientes para um outro programa, e esse só vem em txt! Então os últimos clientes cadastrados serão importados. Se forem 10, eu preciso informar do código 1000 ao 1010. Daí preciso varre a STRINGLIST achar essa faixa de código e importar todos os dados do cliente pro meu sistema. Eu que expliquei mal, mas acho que agora consertei... :D
[b:0aa34e8aa9]george_piaulino[/b:0aa34e8aa9]
Ainda não testei seu código, mas acho que não é isso... mesmo assim obrigado.
GOSTEI 0
Fabiano Góes
01/11/2007
bom, você deve saber o layout certinho do seu arquivo texto.
como exemplo criei um texto com o seguinte layout:
AQUI UM EXEMPLO:
se entendi direito acho q isso pode resolver.
qualquer coisa só postar.
abraço !!!!
como exemplo criei um texto com o seguinte layout:
PINI SIZE CODIGO 01 04 NOME 05 15
AQUI UM EXEMPLO:
procedure TForm1.Button1Click(Sender: TObject); var sl : TStringList; i : integer; pIni: integer; pFim: integer; pAtu: integer; begin pIni := 1001; // CÓDIGO INICIAL pFim := 1010; // CÓDIGO FINAL sl := TStringList.Create; try // ARQUIVO TXT PARA SER IMPORTADO sl.LoadFromFile(´C:\CADASTRO.TXT´); for i := 0 to sl.Count - 1 do begin // CÓDIGO DA LINHA ATUAL PARA TESTAR SE ESTÁ NA FAIXA pAtu := StrToInt(LeftStr(sl.Strings[i], 4)); // TESTA SE O CÓDIGO DA LINHA ATUAL ESTÁ NA FAIXA E IMPORTA if (pAtu >= pIni) and (pAtu <= pFim) then begin // AQUI COMO EXEMPLO IMPORTEI PARA UM TMEMO, AI VOCÊ IMPORTA PARA O BANCO Memo1.Lines.Append(´CODIGO: ´ + LeftStr(sl.Strings[i], 4 )); Memo1.Lines.Append(´NOME..: ´ + MidStr (sl.Strings[i], 5, 15)); Memo1.Lines.Append(´--------------------´); end; end; finally sl.Free; end; end;
se entendi direito acho q isso pode resolver.
qualquer coisa só postar.
abraço !!!!
GOSTEI 0
Microbios
01/11/2007
Fabiano... E COMO RESOLVEU, VIU? MATOU A PAU... funcionou como um relógio suíço novinho... heheheehehhh. Valeu pela colaboração! Se não fossem os ´amigos´ daqui, muitas de minhas dúvidas teriam ficado só na vontade de resolver. :D
P.S: Apesar do código estar dando uma mensagem:
[b:83521b36cb]´[][][][][][] Is not a Valid Integer´[/b:83521b36cb]
Acho que é quando o ´ponteiro´ chega no final da StringList Já que o final do arquivo é cheio de ´quadradinhos´... que no D.O.S signifca final de arquivo. Vou tentar descobrir como consertar isso. 8)
P.S: Apesar do código estar dando uma mensagem:
[b:83521b36cb]´[][][][][][] Is not a Valid Integer´[/b:83521b36cb]
Acho que é quando o ´ponteiro´ chega no final da StringList Já que o final do arquivo é cheio de ´quadradinhos´... que no D.O.S signifca final de arquivo. Vou tentar descobrir como consertar isso. 8)
GOSTEI 0
Adriano Santos
01/11/2007
Fabiano... E COMO RESOLVEU, VIU? MATOU A PAU... funcionou como um relógio suíço novinho... heheheehehhh. Valeu pela colaboração! Se não fossem os ´amigos´ daqui, muitas de minhas dúvidas teriam ficado só na vontade de resolver. :D
P.S: Apesar do código estar dando uma mensagem:
[b:ac984d27ae]´[][][][][][] Is not a Valid Integer´[/b:ac984d27ae]
Acho que é quando o ´ponteiro´ chega no final da StringList Já que o final do arquivo é cheio de ´quadradinhos´... que no D.O.S signifca final de arquivo. Vou tentar descobrir como consertar isso. 8)
Pode ser, usei StrToIntDef(), pois você deve estar usando StrToInt em algum lugar. O StrToIntDef possui um segundo parâmetro veja:
StrToIntDef(´TESTES´, 0);
Se ocorrer erro na conversão a própria função retorna 0 pra evitar erros.
GOSTEI 0
Fabiano Góes
01/11/2007
Fabiano... E COMO RESOLVEU, VIU? MATOU A PAU... funcionou como um relógio suíço novinho... heheheehehhh. Valeu pela colaboração! Se não fossem os ´amigos´ daqui, muitas de minhas dúvidas teriam ficado só na vontade de resolver. :D
P.S: Apesar do código estar dando uma mensagem:
[b:b5ba5550f6]´[][][][][][] Is not a Valid Integer´[/b:b5ba5550f6]
Acho que é quando o ´ponteiro´ chega no final da StringList Já que o final do arquivo é cheio de ´quadradinhos´... que no D.O.S signifca final de arquivo. Vou tentar descobrir como consertar isso. 8)
microbios, como o Adriano Santos citou [b:b5ba5550f6]StrToIntDef[/b:b5ba5550f6] vai resolver o problema de: Is not a Valid Integer
cara já aprendi tanto aqui no forum com o amigos inclusive o proprio Adriano Santos ja me ajudou pra caramba, então quando eu puder ajudar alquem será sempre um prazer.
um abraço e bons códigos a todos.
PAZ !!!
GOSTEI 0
Microbios
01/11/2007
Adriano e Fabiano:
Era isso mesmo, eu passei a testar antes se era Inteiro aí deu certo! só hoje retornei aqui e vi mais uma dica pra APRENDER que é o STRTOINTDEF... vou aplicar!!!! Mais uma vez, OBRIGADO MESMO!
Realmente, o forum é uma enciclopédia.. e se aprende pacas! Eu visito o fórum mais pra ver as dúvidas e aprender com as respostas. Mas não sou invencível, TENHO MINHAS DÙVIDAS.... heheheheheheh
Abrações.
Era isso mesmo, eu passei a testar antes se era Inteiro aí deu certo! só hoje retornei aqui e vi mais uma dica pra APRENDER que é o STRTOINTDEF... vou aplicar!!!! Mais uma vez, OBRIGADO MESMO!
Realmente, o forum é uma enciclopédia.. e se aprende pacas! Eu visito o fórum mais pra ver as dúvidas e aprender com as respostas. Mas não sou invencível, TENHO MINHAS DÙVIDAS.... heheheheheheh
Abrações.
GOSTEI 0
Adriano Santos
01/11/2007
Estou sempre as ordens. Um forte abraço
GOSTEI 0