Fórum Soma simples dando errado. #514618
24/03/2015
0
Estou fazendo um loop onde incremento um valor, esse valor é uma string onde eu converto em integer e depois somo 1.
Oque acontece é que quando chega no numero 10, a soma para de funcionar. Sempre me retorna o numero 10.
Oque será q eu fiz de errado ???
O trecho do código e esse ...
COD_1 := inttostr(strtoint(COD_1) + 1);
no loop vai bem até 9 depois do 10 fica repetindo o 10 .....
Fico no aguardo dos colegas.
Vilson Pereira
Curtir tópico
+ 0Post mais votado
24/03/2015
Sim... use o cast !
Marcos P
Gostei + 1
Mais Posts
24/03/2015
Marcos P
A ideia é somar na mesma variável (COD_1 ) ?
Você tentou usar uma outra variável como inteiro, apenas para controlar o loop ?
Consegue colocar o trecho do código com o loop ?
Gostei + 0
24/03/2015
Vilson Pereira
o loop é enorme, mas essa parte deste incremento é só isso msm ...
é bem assim .
eu carrego uma var tipo string com um valor string '0' por exemplo ... depois converto pra integer e vou só incrementando em cada passagem do loop.
tipo
while not eof do
begin
COD_1 := inttostr(strtoint(COD_1) + 1);
next;
end;
tem mais coisas no loop mas nada q afete essa soma. o estranho é q vai certinho até o 9 ... depois do 10 começa a repetir e não soma mais ... não vai para o 11 ....
Gostei + 0
24/03/2015
Marcos P
Você consegue controlar esse contador por uma variável declarada com integer ?
( e talvez, fora do loop, voltar o controle pra string... se necessário ? )
Gostei + 0
24/03/2015
Vilson Pereira
o engraçado é que eu coloquei um showmessage logo após o trecho e ele me retorna 0 depois 1 depois 2 ate 9 ... depois fica retornando 10 ... mas se retornou 10 então não ta só um byte ... senão seria 0 não é ?
já retorno o resultado ....
Gostei + 0
24/03/2015
Vilson Pereira
eu fiz assim ....
COD_1_INTEGER := strtoint(COD_1);
COD_1_INTEGER := COD_1_INTEGER + 1;
e o efeito é o mesmo ... chega no 10 e começa a repetir ... doidera ....
Gostei + 0
24/03/2015
Marcos P
"Limpe" o código dentro do loop ( comentando-o, por exemplo... ) e deixe apenas o controle do contador e a condição de controle do eof...
O problema persiste ?
Gostei + 0
24/03/2015
Vilson Pereira
é que eu carrego a variavel pegando o valor do banco de dados ... ai eu uso uma sql ...
'select max(COD_1)as COD_1 from CADASTRO';
ela volta certo até o 9 depois ta voltando sempre 9 ... ai no incremento sempre vai dar 10 mesmo .... agora a duvida é outra ... porque essa sql não ta funcionado ? lembrando que o campo no banco de dados é varchar ... será q é isto ? o select max não funciona pra campo varchar ????
Gostei + 0
24/03/2015
Marcos P
Se for o caso, ajuste a query convertendo o retorno para integer...
Gostei + 0
24/03/2015
Vilson Pereira
Será q tenho q usar o cast ????
Gostei + 0
24/03/2015
Vilson Pereira
eu fiz assim ...
'select max(cast(COD_1 as integer))as COD_1 from CADASTRO';
e agora a sequencia continua certinho ...
Valeu msm ....
Resolvido ....
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)