Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Comprobar si existe elemento en el Array (https://www.clubdelphi.com/foros/showthread.php?t=53287)

Cecil 17-02-2008 05:11:14

Comprobar si existe elemento en el Array
 
Hola, me gustaría saber la forma de comprobar si en un array existe el elemento al que intentamos acceder, es decir, si tenemos un array de integer de tamaño 10 por ejemplo, si intentamos acceder a la posición 20 nos mostrarán una excepción indicando que es una posición inaccesible. Algo así como el Assigned, pero para este tipo de datos. Mil gracias y un saludo.

Delphius 17-02-2008 06:30:41

Hola Cecil,
Espero que esto pueda darte una idea:

Código Delphi [-]
function DimensionArray(Vector: array of integer; Dimension: integer): boolean;
begin
  result := High(Vector) >= Dimension;
end;

Como puedes observar, la función lo que hace es obtener el indice máximo del vector dinámico, y lo compara con la dimensión (mejor dicho posición) que tu deseas averiguar.

Un ejemplo de uso:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var vec: array of integer;
begin
  SetLength(vec,20);
  if ifDimensionArray(vec,20)
     then ShowMessage('Tiene la dimensión adecuada')
     else ShowMessage('No tiene la dimensión adecuada');
end;

Si corres este ejemplo, recibirás "No tiene la dimensión adecuada". Recuerda que en los vectores dinámicos la posición comienza a contar desde 0 hasta el máximo valor menos 1. Es decir que si tu haces:

Código Delphi [-]
SetLength(vec,40);

Tu vector irá desde 0 hasta 39.

Espero que esto haya sido de ayuda. Al lo dijo estupendamente correcto.
Muchas gracias Al por haberme dado el tironcito de orejas! :D :)
Saludos,

Al González 17-02-2008 06:37:25

¡Hola!

Puedes usar la función High dándole como argumento el arreglo en cuestión. Te devolverá el último índice válido del arreglo; o la cantidad de elementos menos 1, si el argumento es un parámetro formal arreglo abierto de la rutina donde se escriba la llamada a High.

La ayuda de Delphi detalla más su uso, pero de todas formas no dejes de plantearnos tus dudas.

Saludos.

Al González.


La franja horaria es GMT +2. Ahora son las 03:30:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi