Fórum Stringlist: Varrer o string...Várias vezes! #348333
01/11/2007
0
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
Curtir tópico
+ 0Posts
01/11/2007
Fabiano Góes
eu não entendi essa varredura, você quer varrer todas as linhas ou todas as posições de uma determinada linha ?
Gostei + 0
01/11/2007
George_piaulino
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
01/11/2007
Microbios
[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
01/11/2007
Fabiano Góes
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
01/11/2007
Microbios
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
01/11/2007
Adriano Santos
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
01/11/2007
Fabiano Góes
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
02/11/2007
Microbios
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
03/11/2007
Adriano Santos
Gostei + 0