Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   arrays dinamicos (https://www.clubdelphi.com/foros/showthread.php?t=29698)

Chompiras 30-01-2006 16:44:10

arrays dinamicos
 
¿Alguien seria capaz de explicarme algo sobre arrays dinamicos?. (por favor traten de explicarlo de la manera mas simple posible, ya que recien estoy empezando con delphi y no se mucho todavia de esto)

eliash 30-01-2006 17:53:40

Es como un array común, solo que puedes variar el numero de valores (simplemente no tienes que declararlo)

para ello se utilizan la funcion:
setlength

También se utilizan, en el trabajo con arrays, estas otras:
low
high
length
copy
Slice

Chompiras 31-01-2006 16:43:25

ok eliash, era masomenos lo que yo pensaba. Muchas gracias por responder!!!

cuburu 01-02-2006 03:28:31

quizas esto pueda complementarse con lo que explico eliash

Un array no es más que una tabla, digamos de 2x2 que almacena información en cada campo que tiene, por ejemplo, en el array anterior podemos almacenar 4 datos que es la multiplicación de 2x2. La forma de almacenamiento es por medio de filas x columnas. Lógicamente éste tipo de arreglos se llaman estáticos debido a que tienen un tamaño fijo.

Ahora, los arreglos dinamicos tienen la misma filosofía que los arreglos estaticos pero la diferencia es que no tienen declarado un tamaño fijo, éste se va creando conforme se agregen o eliminen datos de éste.

para declarar un arraglo estático se utiliza algo como esto:

Código Delphi [-]
var
  //Este arreglo podrá almacenar información desde la posición 0 a la 5.
  Array_estatico: array[0..5] of Integer;

y para un arreglo dinamico:

Código Delphi [-]
var
  {Solo definimos el "esqueleto" de nuesto arreglo pero no podemos declarar
nada hasta darle un tamaño}.
  Array_dinamico: array of Integer;

  {Para darle un tamaño determinado se utiliza la sentencia SetLength como te dijo eliash, esto sería algo asi:}
  SetLength(Array_dinamico, 5);

De esta forma estamos declarando al arreglo dinamico de 5 posiciones. Si deseamos volver a redimensionar el arreglo volvemos a utilizar el SetLength y colocamos el nuevo valor.

NOTA: Si redimensionamos el arreglo a un tamaño menor al anterior los valores que se encuentren dentro del rango eliminado seran borrados. Es decir, si el arreglo era de 5 y lo redimensionamos a 3 los valores en las posiciones 4 y 5 se perderán.

Ya por último y para no hacertela tan larga y cansada si necesitamos extraer la información de un arreglo normalmente utilizaríamos una variable que almacenara el inicio del arreglo y otra que manejará el final.... eso es para simples mortales.

Existe una forma más sencillas de saber de donde tenemos que empezar a buscar, por ejemplo si nuestro arreglo es de 5 posiciones pero no lo recordamos utilicemos a Delphi para que los busque por nosotros.

Código Delphi [-]
var
  Cont: Integer;
begin
  for Cont = Low(Array_dinamico) to Hight(Array_dinamico) do
  begin
    ShowMessage('El valor es: ' + IntToStr(Array_dinamico[Cont]))
  end;
end;

Las funciones Low y Higth hacen toda la chamba por nosotros, localizan donde existen valores almacenados y nos los devuelven.

Bueno, espero que te halla servido esta explicación un poco más a fondo pero sencilla de lo que es una transacción dinamica y estática, hay muchas más cosas que aprender pero creo que con esto puedes empezar a trabajar.

Suerte.

eliash 01-02-2006 10:22:26

Buff, eso sí que es una explicación... me asombra la paciencia que teneis algunos para poneros a escribir con tantos datos y detalles.. y que aun por en cima se entienda y resulte coherente. Yo no podría :)

Chompiras 04-02-2006 16:31:51

Pregunta que me esta volando la mente:
¿¿Con el setlenght se setea tanto el ancho como el largo del arreglo?? ¿¿Como hago para setearlos por separado??


Pd: Cuburu te pasaste con la explicacion. Igual se poco de delphi, pero de pascal se bastante.

Thales 04-02-2006 19:42:01

Mira en la ayuda de Delphi
 
En efecto, se puede definir la dimensíón de cada fila por separado.
Busca en la ayuda "multidimensional dynamic arrays" y encontrarás un ejemplo de ello.

Un saludo

Chompiras 04-02-2006 20:32:05

Gracias thales. Es verdad, el ejemplo de la ayuda de delphi me saco todas las dudas. Gracias de nuevo!!!

cipce22 14-07-2015 22:49:51

Perfecto
 
Muchas gracias, es todo lo que se necesita : D

Cita:

Empezado por cuburu (Mensaje 128551)
quizas esto pueda complementarse con lo que explico eliash

Bueno, espero que te halla servido esta explicación un poco más a fondo pero sencilla de lo que es una transacción dinamica y estática, hay muchas más cosas que aprender pero creo que con esto puedes empezar a trabajar.

Suerte.



La franja horaria es GMT +2. Ahora son las 05:02:15.

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