GARANTIR DESCONTO

Fórum Stringlist: Varrer o string...Várias vezes! #348333

01/11/2007

0

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


Microbios

Microbios

Responder

Posts

01/11/2007

Fabiano Góes

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 ?


Responder

Gostei + 0

01/11/2007

George_piaulino

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;


Responder

Gostei + 0

01/11/2007

Microbios

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.



Responder

Gostei + 0

01/11/2007

Fabiano Góes

bom, você deve saber o layout certinho do seu arquivo texto.
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 !!!!


Responder

Gostei + 0

01/11/2007

Microbios

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)


Responder

Gostei + 0

01/11/2007

Adriano Santos

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.


Responder

Gostei + 0

01/11/2007

Fabiano Góes

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 !!!


Responder

Gostei + 0

02/11/2007

Microbios

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.


Responder

Gostei + 0

03/11/2007

Adriano Santos

Estou sempre as ordens. Um forte abraço


Responder

Gostei + 0

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

Aceitar