Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Array bidimensional dinámico (https://www.clubdelphi.com/foros/showthread.php?t=62472)

harpo 27-12-2008 11:34:00

Array bidimensional dinámico
 
Buenas,

estoy tratando de declarar un array bidimensional dinámico.

Tengo lo siguiente

Código:

TFila = 1..26;
TColumna = 'A'..'Z';

TTablero = array [TFila, TColumna] of Char;

Código:

var
    TableroPrograma : TTablero;
    maxFilas        : TFila;
    maxColumnas    : TColumna;
 begin
    SetLength(TableroPrograma,maxFilas,maxColumnas);

Me dice que en SetLength los tipos son incompatibles. He probado con SetLength (TableroPrograma,1,1), con SetLength(TableroPrograma,1,'A') ... pero me sigue dando el mismo error. :(

¿Qué estoy haciendo mal?

Gracias

Robert01 27-12-2008 15:00:16

Para mi está mal definido, tu array bidimensional está formado por vectores fila y luego por vectores columna, no tiene sentido.

Saludos

Lepe 27-12-2008 15:27:47

Si no recuerdo mal, SetLenght sólo permitía cambiar la última dimensión de un array dinámico (consulta la ayuda para estar seguro).

Por otra parte, tu tablero no está definido como un array dinámico, es estático, tiene 26 filas y ¿27? columnas.

Código Delphi [-]
type TmiArray: array of char;
var v:TmiArray
begin
SetLength(v,27);
end;
Aquí TmiArray si es dinámico, porque no define los índices entre corchetes.

Tal y como lo tienes definido, no tienes que preocuparte por el tamaño, siempre que accedas entre los índices definidos, todo irá bien.

Recuerda inicializar los valores del array antes de leer un índice, o leerás cualquier cosa.

Saludos

viveba 31-03-2015 15:11:17

Matriz dinámica.
 
Puedes hacer lo siguiente:

Código Delphi [-]
type
  Vector = array of Integer;
  Matriz = array of Vector;

var
  C,D: Matriz;

procedure TForm3.Button1Click(Sender: TObject);
var
  i,j,N: Integer;

begin
  N := 10;
  setlength(C,N,N);
  setlength(D,N,N);
  for i := 0 to N-1 do
    for j := 0 to N-1 do
    begin
      C[i,j] := i;
      D[i,j] := j;
    end;
end;

básicamente, así lo hago yo.


La franja horaria es GMT +2. Ahora son las 11:28:06.

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