Autor Beitrag
Leto
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

XP
D7 Enterprise
BeitragVerfasst: Mo 26.07.04 13:53 
Anfängerproblem. Wahrscheinlich schnell gelöst, nur ich vermag es nicht zu finden:

Wie übergebe ich ein zweidimensionales statisches Array in eine Prozedur. Die Prozedur soll aber bezüglich der Array-Größe nicht eingeschränk werden.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure init(feld: array of array of Boolean);
var
  i : Integer;
  j : Integer;
begin
  for i := 1 to length(feld) do begin
    for j:= 1 to length(feld[i]) do begin
      //was auch immer...
    end;
  end;
end;


Dieser Code haut nicht. Erkennt der Compiler dies als statisches Array an, wenn ich ein solchen übergebe?


Moderiert von user profile icontommie-lie: PHP- durch Delphi-Tags ersetzt: bei uns gibt's keinen PHP-Highlighter und selbst wenn, der Code da oben ist nicht PHP sondern Delphi Language ;-)

_________________
Carpe Noctem
Dr. Phil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 66

Win XP
Delphi 7 Prof.
BeitragVerfasst: Mo 26.07.04 14:05 
Hallo!
Du kannst Arrays nicht als Parameter übergeben, sondern musst einen Typ dafür erstellen.
ausblenden Delphi-Quelltext
1:
2:
type
  TFeld = Array of Boolean;


Wenn du nicht von der Größe des Arrays eingeschränkt werden willst, kannst du dynamische Arrays verwenden, denen du nachher zur Laufzeit mit SetLength(); die Größe zuweist.
Nur ob das jetzt auch mit dem Typ geht...

Ach es kann natürlich auch sein, dass das alles hier nicht stimmt, bin schon ein wenig eingerostet :roll:

_________________
self-improvement is masturbation;
self-destruction is the answer - Tyler Durden
Leto Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

XP
D7 Enterprise
BeitragVerfasst: Mo 26.07.04 14:11 
Danke. Tatsächlich es kompiliert sich. Aber irgendwie bemerke ich gerade dass Array nich call-by-Referbce übergeben werden. Zumindets scheint mir dies so, denn ein übergebenden und dort verändertes Array hat kein Einfluss auf die "Original"-Instanz. Hmmm.. wie macht man sowas in Delphi denn. Komme aus der Java, C++ Welt.

_________________
Carpe Noctem
Dr. Phil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 66

Win XP
Delphi 7 Prof.
BeitragVerfasst: Mo 26.07.04 14:20 
Naja bei Variablenparametern, also Parameter deren Inhalt auch nach Abschluss der Prozedur erhalten bleiben soll, schreibt man ein var davor.
ausblenden Delphi-Quelltext
1:
procedure Demo(var Feldchen: TFeld);					

_________________
self-improvement is masturbation;
self-destruction is the answer - Tyler Durden


Zuletzt bearbeitet von Dr. Phil am Mo 26.07.04 14:21, insgesamt 1-mal bearbeitet
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 26.07.04 14:20 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure init(var feld: array of array of Boolean); // <--- Hier das Wörtchen Var rein,
// evt auch in der Forwarddeklaration einfügen
var
  i : Integer;
  j : Integer;
begin
  for i := 1 to length(feld) do begin
    for j:= 1 to length(feld[i]) do begin
      //was auch immer...
    end;
  end;
end;
fritierte
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 58



BeitragVerfasst: Mo 26.07.04 14:24 
ausblenden Delphi-Quelltext
1:
2:
3:
procedure init(var feld:TFeld);
begin
end;


das müsste das sein, was du wolltest, probiers mal aus
Leto Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

XP
D7 Enterprise
BeitragVerfasst: Mo 26.07.04 14:39 
Großartig.
So kommt man weiter.
Vielen Dank!

_________________
Carpe Noctem