Ver Mensaje Individual
  #2  
Antiguo 14-02-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Reputación: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
No encuentro que esto sea muy necesario de hacer, porque basta restar 1 o sumar 1 cuando convenga. Pero si de todas formas quieres hacerlo como dices, te doy una forma de aproximarte:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Type
  TA = Array [1..1000000] Of Extended;
Var
  Fila :Array of Extended;
  FilaX :^TA Absolute Fila;
  I :Integer;
Begin
  SetLength (Fila, 3);
  Fila [0] := 17;
  Fila [1] := 10;
  Fila [2] := 1974;

  For I := 1 To 3 {Length (Fila)} Do
    Showmessage (FloatToStr (FilaX [i]));
end;

En el ejemplo, he declarado la variable FilaX para que ocupe la misma posición de memoria (Absolute) que la variable Fila. Esto funciona gracias a que un arreglo dinámico es en realidad un puntero al primer valor que contiene. Y como a FilaX le hemos dado declaración de puntero (^), ambas variables apuntarán a la misma región de memoria, pero el compilador tomará las referencias a FilaX con el índice base 1 (ya que así está declarado el tipo auxiliar TA).

Saludos.

Al González.
Responder Con Cita