Ver Mensaje Individual
  #6  
Antiguo 24-05-2006
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Reputación: 0
Ruben_Cu Va por buen camino
A ver si...

Hola a todos, trataré de ayudar en este tema, creo que para entender el por qué del uso de downto debemos tener en cuenta lo siguiente:
1º El TPageControl mantiene un arreglo indexado de sus TabSheets.
2º Es imposible acceder al índice de un supuesto elemento que sea mayor que el mayor índice del arreglo, sencillamente no existe (esto es válido para todos los arreglos incluyendo los TStrings toda su descendencia).
Ahora bien en este caso ocurre que:
Cuando se comienza a iterar en el For el valor la variable i desde 0, como sabemos, se incrementa en uno y al ejecutar la declaración de liberar (Free) el TabSheets entonces la propiedad PageCount se refresca a la nueva cantidad de elementos del arreglo, que por supuesto es uno menos que en la iteración anterior.
Y así sucesivamente hasta el momento en que el valor de i sea igual al valor de la propiedad PageCount justo en ese punto vas a querer destruir un TabSheets que no existe, dicho de otra manera un elemento indexado del array que no existe, y por tanto lanzará la excepción.
En el caso del uso del downto este fenómeno no ocurre puesto que siempre la propiedad PageCount tendrá un valor superior a 0 y al destruir la última pestaña será igual a 0. De esta forma se asegura que el error nunca ocurrirá.
Nota que esto solo ocurre en el caso de destrucción de las pestañas, en otros casos se puede usar sin dificultades el For … to … do para el PageControl
Hice un esfuerzo para tratar de explicarme, ya me comentarán si lo logré.
Saludos
Responder Con Cita