Ver la Versión Completa : Inicializar arrays multidimensionales
Wellnic
23-05-2007, 21:37:36
Hola:
¿Se pueden inicializar arrays de varias dimensiones? Es decir:
Si Var unidim: Array[0..5] Of Integer= (5, 6, 97, 928, 45, 8765);
Var mltdim: Array[0..5, 0..7] Of Integer= ?
Delphius
23-05-2007, 22:59:01
Para hacer lo que pides, debes declarar arrays dinámicos.
MiArray = array of Integer;
En la unidad Types cuentas con unos arrays dinámicos ya definidos. Todos tienen como nomeclatura:
DynArray......
Y para darle tamaño tienen la función SetLength(). En la sección de trucos hay dos ejemplos de como usarlos: N° 378 (http://www.clubdelphi.com/trucos/index.php?id=378&scroll=0&scrollb=0) y 379 (http://www.clubdelphi.com/trucos/index.php?id=379&scroll=0&scrollb=0).
La parte de inicializar, te la dejo como tarea. Creo que con el material que te pasé puedes hacerte una idea.
Si tienes dudas, avisa.
Saludos,
Wellnic
24-05-2007, 00:48:05
Me temo que en Delphi 3 no se implementan los arrays dinámicos... En fin... tendré que ingeniármelas de otro modo.
Gracias de todas formas. :)
Si, cada fila entre paréntesis también:
var x: array [0..2,0..4] =
( (1, 2 , 3),
(5, 5, 5),
(1, 2 , 3),
(1, 2 , 3),
(1, 2 , 3),
);
La pega es que no se puede declarar dentro de una función, pero si "x" es una variable global (de implementación o de interface de un archivo .pas),entonces, se permite estas cosas (creo recordar vagamente.... uf... es que hoy estoy de un vago.... :D)
Saludos
seoane
24-05-2007, 17:27:02
Y el compilador dice .... que Lepe tiene razón, solo que confundió filas con columnas :p :D
var x: array [0..4,0..2] =
( (1, 2 , 3),
(5, 5, 5),
(1, 2 , 3),
(1, 2 , 3),
(1, 2 , 3)
);
Y al menos a mi, me deja declararla como variable global.
Wellnic
25-05-2007, 00:49:39
OK, gracias. :) Esa debió de ser la única combinación que no había probado... Teengggo lla ccabecha... ())( :confused: :confused: :confused:)(())
A ver si soy capaz de desliar este desaguisado.
En principio puse que si "x" es una variable global, no se podía inicializar y envié el mensaje al foro. Me quedé pensando y dije... no... Delphi no deja inicializar el array dentro de un procedimiento, lo verifiqué, edité mi mensaje y lo corregí.
(eso de "recordar vagamente" lo dejé como broma)
Obviamente Neftali había respondido al mensaje original y mi edición fue posterior.
Delphi dice: "Cannot initialize local variable", por tanto, debe ser una variable global (de interface o implementation) para poder inicializarla.
El tema de filas y columnas... cierto, estoy con un StringGrid liado y ya no sé ni quien soy yo :D.
Saludos
Delphius
25-05-2007, 17:53:29
Obviamente Neftali había respondido al mensaje original y mi edición fue posterior.
¿Ummm?
Lepe, creo que deberías tomarte un pequeño descanso.
No veo que Neftali haya posteado por aquí.:confused:
Saludos,
Robert01
25-05-2007, 19:16:12
Una pregunta sobre array multidimensionales y delphi 3:
¿No se puede hacer de la siguiente forma?
Const nmax = 100;
type Miarray =[1..Nmax,1..Nmax] of integer;
Var a : MiArray;
implementation
procedure X();
var n : integer;
begin
setlength(a,n,n);
.
.
.
end;
end.
Saludos
¿Ummm?
Lepe, creo que deberías tomarte un pequeño descanso.
No veo que Neftali haya posteado por aquí.:confused:
Saludos,
Tienes toda la razón... vamos toda, que no te falta nada.
Perdón seoane.
roman
25-05-2007, 19:44:52
Delphi dice: "Cannot initialize local variable", por tanto, debe ser una variable global (de interface o implementation) para poder inicializarla.
Puede intentarse algo "local" así:
{$writeableconst on}
procedure Algo;
const
x: array [0..4,0..2] of Integer=
( (1, 2 , 3),
(5, 5, 5),
(1, 2 , 3),
(1, 2 , 3),
(1, 2 , 3)
);
begin
x[0,0] := 84;
end;
{$writeableconst off}
// Saludos
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.