Como complemento al comentario de Al:
Hay, también, dos funciones que devuelven los límites de un vector (lista o
array) que son
High y
Low. Es decir,
Low devuelve el índice del primer elemento y
High devuelve el índice al último. Funciona con cualquier tipo de vector, tanto dinámico como estático, lo que facilita mucho el trabajo cuando tienes que recorrer listas de las que no sabes cuántos elementos tienen o cuál es elemento inicial (ya sabes que en Pascal puedes elegir el índice del primer elemento). Por ejemplo:
Código Delphi
[-]
PROCEDURE MuestraInfoVector (Vector: ARRAY OF INTEGER);
VAR
Ndx: INTEGER
BEGIN
WriteLn ('Los límites del vector son ', Low (Vector), ' y ', High (Vector), '.');
Write ('Y sus elementos son: v = {');
FOR Ndx := Low (Vector) TO High (Vector) DO
Write (Vector[Ndx], ' ');
WriteLn ('}');
END;
VAR
Vector1: ARRAY [0..9] OF INTEGER;
Vector2: ARRAY [7..15] OF INTEGER;
BEGIN
...
MuestraInfoVector (Vector1);
MuestraInfoVector (Vector2);
END.
Nota: Estoy en la oficina y no tengo ni Delphi ni FreePascal para probar el código anterior, pero debería funcionar.
Nota2: No confundir con las funciones
Hi y
Lo. Estas devuelven el octeto alto o el bajo de un entero.
Nota3: High y
Low también permiten conocer los límites de un tipo de dato. Por ejemplo, si "Variable" es un entero, entonces "High (Variable)" te devolverá el valor máximo que puede almacenar. También puede usarse con tipos (por ejemplo "Low (INTEGER)") pero no con todos ellos.