[Delphi] Mehrdimensionales Array als Parameter

almdudler777

Well-known member
ID: 115892
L
21 Mai 2006
45
1
Hallo leute,


da habe ich gleich mein nächstes Problem mit Delphi....

und zwar bin ich immer noch bei meinem Quartett..

Ich muss an den Constructor einer Klasse ein paar Arrays übergeben mit nur einer Dimension geht es mit
Code:
init(bla,bla2,bla3 : Array of TLabel);

aber wie macht man es mit mehreren Dimensionen?? (genauer gesagt 2)
 
Wenn die Sprache so logisch ist, wie von Herrn Wirth propagiert, müsste Array of Array of WasWeissIch klappen, weil mehrdimensionale Arrays ja nichts anderes sind.
 
jo das habe ich mir auch gedacht dann kommt allerdings die meldung das nach dem ersten Array of nen Typ deklariert werden muss....

:arrow: Array of Array of TLabel nicht möglich
 
Hab grade kein Delphi da, aber versuch mal folgendes:
Code:
type TLabelArray = Array of TLabel;
...
init(bla,bla2,bla3 : Array of TLabelArray)

Keine Garantie, aber ich glaube mich zu erinnern, dass ich bei Pointern mal solche Verrenkungen machen musste.
 
Hi,


also wenn ich das richtig verstanden habe:

Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;


type TLabelArray = Array of TLabel;

type
  TForm1 = class(TForm)
    Button1: TButton;

    procedure test(a:array of TLabelArray);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var test : array[0..2,0..4] of TLabel;
begin
  self.test(test);
end;

procedure TForm1.test(a: array of TLabelArray);
begin
  showmessage('Weeeaaa');
end;
end.

geht aber leider nicht ! kommt die Meldung inkompatible Typen....?! (line 34)


EDIT:

so habe nochmal nen bisschen probiert:
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;


type TLabelArray = Array[0..1] of TLabel;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;

    procedure test(a:array of TLabelArray);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var test : array[0..2] of TLabelArray;
begin
  test[0][0] := Label1;
  self.test(test);
end;

procedure TForm1.test(a: array of TLabelArray);
begin
  showmessage('Weeeaaa');
  a[0][0].Visible := false;
end;
end.

würde funktionieren, hätte aber den Nachteil das ich mein ganzes Programm noch mal nen bissel abändern müsste.... im Moment müsste ich nur das Array vom Private unters Public setzten und müsste dann mit Form1.ARRAYNAME auch darauf kommen oder?

MFG almi

MFG almi
 
Zuletzt bearbeitet: