Ver Mensaje Individual
  #15  
Antiguo 26-02-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por BrunoBsso Ver Mensaje
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
Responder Con Cita