Cita:
Empezado por BrunoBsso
Porque la función Length(Vect1) es en tiempo de ejecución, no le da ningún dato al programa al compilar 
O sea, Length la usa el programa en tiempo de ejecución, no mientras estás codeandolo, y es ahí en la ejecución cuando devuelve algún dato.
|
Me parece que no puede ser como lo dices. Una construcción del tipo
Código Delphi
[-]
const
V: array[A..B] of Integer = (...)
requiere que A y B sean constantes, es decir, que sean conocidos al momento de la compilación, ya que el tipo de datos corresponde a un arreglo de tamaño fijo.
En una construcción como:
Código Delphi
[-]
const
U: array[0..2] of Integer = (...);
V: array[0..Length(U) - 1] = (...);
seguramente el compilador calcula el valor de Length, cosa que puede hacer porque el mismo vector U es constante y ya está determinada su longitud desde la compilación. Esto debe ser "magia" del compilador, pues no sucedería lo mismo con otra función.
Si cambiamos la definición a algo como:
Código Delphi
[-]
var
U: array of Integer;
const
V: array[0..Length(U) - 1] = (...);
ya no compila, pues, siendo U un vector dinámico, el compilador no tiene manera de saber cuál es su longitud y requiere una constante para el índice superior de V.
// Saludos