FK. 0 Denunciar post Postado Abril 10, 2012 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
Meneguci 1 Denunciar post Postado Abril 11, 2012 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
FK. 0 Denunciar post Postado Abril 11, 2012 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
Meneguci 1 Denunciar post Postado Abril 11, 2012 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
FK. 0 Denunciar post Postado Abril 11, 2012 Vlww cara, resolvido XD Compartilhar este post Link para o post Compartilhar em outros sites