Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FK.

[Resolvido] Laço for delphi com -1

Recommended Posts

Opa, faz um tempo que programo com delphi, porém nunca entendo porque a maioria dos laços FOR sobre uma propriedade inteira deve ter um -1 ou essa tal de função Pred() em volta dela. Por exemplo:

 

for I := 0 to cdsDependente.Fields.Count -1 do // Porque tem esse -1 ?
begin
 if cdsDependente.Fields[i] is TDateField then
 begin
   cdsDependente.Fields[i].OnSetText := Self.setTextDateField;
 end;
end;

 

Sei que se eu não usar, lança uma mensagem: "List index out of bounds(AlgumNúmero)". Mas porque eu tenho que usar ?

 

Vlw !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa fernando,

é o seguinte, vou tentar simplificar para você, vamos usar o seu exemplo ai com Fields.Count

No caso o Fields pode ser considerado um "array"(ou uma lista de TField), e array no delphi começa da posição 0(zero).

agora um outro exemplo, array de string = ["a","b","c","d","e","f"]

se eu pedir o tamanho(count) desse array, será me retornado 6, mas não existe no array essa posição, pois ele vai somente de [0..5]

repare que no seu "for", ele começa a contar da posição 0 e vai até o tamanho 6 menos 1(5), para que não acesse uma posição que inexistente no array.

Espero ter sanado sua dúvida. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o problema está na propriedade Count, que me retorna um valor sem contar do 0 ?

Por exemplo, o array que você citou, tem 6 posições, porém, ele começa do 0 e vai até 5, mas a propriedade Count desse array me retorna o número 6, é isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o problema está na propriedade Count, que me retorna um valor sem contar do 0 ?

Por exemplo, o array que você citou, tem 6 posições, porém, ele começa do 0 e vai até 5, mas a propriedade Count desse array me retorna o número 6, é isso ?

Mas não é problema, está correto, existem 6 elementos no array, só que o delphi não faz a contagem de 1..6 e sim de 0..5

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.