11 Voto

Delphi/Lazarus: Recorrer Array independientemente del Índice

Pregunta de Invitado | 18/01/2024 a las 15:30

Me gustaría pasar una matriz/array completa en Delphi/Lazarus independientemente de su índice inicial y final.

Hasta ahora, siempre he usado algo como i:=0 to length(array)-1, pero también tengo algunas matrices/arrays que no comienzan en un índice de 0.

Entonces, ¿existe alguna posibilidad de simplificar la tarea para comenzar o iniciar el ciclo en un índice arbitrario (y no 0 en cada caso)? Por ejemplo, ¿alguna función para recuperar o determinar el índice más pequeño de una matriz determinada?

ResponderPositivoNegativo
2Mejor Respuesta2 Votos

Simplemente use low(array) y high(array) en lugar de 0 y length(array). Con low(), obtiene el primer índice de la matriz, con high() obtiene el último.

El "-1" que necesita cuando usa length(array) no es necesario con esto ya que recibe directamente el último índice de la matriz.

var
  array_dyn: array of integer;
  array_stat: array[2..7] of integer;
begin
  SetLength(array_dyn, 5);

  for i := low(array_dyn) to high(array_dyn) do begin
     // correspondiente a i := 0 to 4
     array_dyn[i] := 1;
  end;

  for i := low(array_stat) to high(array_stat) do begin
     // correspondiente a i := 2 to 7
     array_stat[i] := 1;
  end;

end;

Como puede ver en este ejemplo, puede usar low() y high() con matrices estáticas y dinámicas.
18/01/2024 a las 23:34

ResponderPositivo Negativo
Responder

Temas Relacionados

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.