Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Statische Arrays mit type und Wertzuweisung? (https://www.delphipraxis.net/12725-statische-arrays-mit-type-und-wertzuweisung.html)

mirko2000 3. Dez 2003 09:16


Statische Arrays mit type und Wertzuweisung?
 
Hallo!

Ich habe in verschiedenen Büchern gelesen, dass man für statische Arrays erst einmal ein type definieren soll.

Jetzt habe ich aber ein Problem mit der Zuweisung von Werten!

Folgendes habe ich global vereinbart:

Delphi-Quellcode:
type
     TMatrix = array[0..5,0..4] of integer;

var
     frmSpielfeld: TfrmSpielfeld;
     bld : TMatrix;
Jetzt möchte ich dem Array Werte zuweisen:

Delphi-Quellcode:
procedure TfrmSpielfeld.FormCreate(Sender: TObject);
begin
bld:=((,2,2,2,2),
      (2,1,1,1,2),
      (2,1,0,1,2),
      (2,1,0,1,2),
      (2,1,1,1,2),
      (2,2,2,2,2));
end;
Es kommt jetzt immer die Fehlermeldung:

Code:
[Fehler] mSpielfeld.pas(98): ')' erwartet, aber ',' gefunden
[Fataler Fehler] pSpielfeld.dpr(5): Verwendete Unit 'mSpielfeld.pas' kann nicht compiliert werden
Ich weiß, dass ich die Zuweisungen mit bld[0,0] := 2, usw. machen könnte! Das ist mir aber zu viel Code was ich da schreiben müsste!

Luckie 3. Dez 2003 09:26

Re: Statische Arrays mit type und Wertzuweisung?
 
Du kannst es nicht so machen, wie du willst, du musst dich schon nach Delphi richten. Also entweder setzt du jedes Element einzeln zur Laufzeit oder du initialisierst es bei der Deklaration.

PS: Man kann so was auch mit Scheiflen lösen, wenn man nicht so viel tippen will. :wink:

himitsu 3. Dez 2003 09:29

Re: Statische Arrays mit type und Wertzuweisung?
 
Erst mal fehlt dort eine Zahl:
Code:
[b]procedure[/b] TfrmSpielfeld.FormCreate(Sender: TObject);
[b]begin[/b]
bld:=(([color=red]X[/color],2,2,2,2),
      (2,1,1,1,2),
      (2,1,0,1,2),
      (2,1,0,1,2),
      (2,1,1,1,2),
      (2,2,2,2,2));
[b]end[/b];
Und dann bin ich mir nicht sicher ob es so geht das komplette Array zuzuweisen, wenn ich es auch in einer Procedure versuche kommt ebenfalls ein Fehler.

Aber so ging es:
Delphi-Quellcode:
Type TMatrix = array[0..5, 0..4] of integer;

Var bld: TMatrix =
  ((0,2,2,2,2),
   (2,1,1,1,2),
   (2,1,0,1,2),
   (2,1,0,1,2),
   (2,1,1,1,2),
   (2,2,2,2,2));
[add]
Gut dank Luckie hat sich das gelöst.
Dann besteht aber noch diese Möglichkeit:
Delphi-Quellcode:
Type TMatrix = Array[0..5, 0..4] of integer;

Var bld: TMatrix;

Procedure TfrmSpielfeld.FormCreate(Sender: TObject);
  Const bld2: TMatrix =
    ((0,2,2,2,2),
     (2,1,1,1,2),
     (2,1,0,1,2),
     (2,1,0,1,2),
     (2,1,1,1,2),
     (2,2,2,2,2));

  Begin
    bld := bld2;
  End;
http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

jbg 3. Dez 2003 09:29

Re: Statische Arrays mit type und Wertzuweisung?
 
Mit hilfe einer Funktion kannst du zumindest die Zeilenvektoren füllen:

Delphi-Quellcode:
procedure SetLineVec(var Matrix: TMatrix; Row: Integer; const Values: array of Integer);
var i: Integer;
begin
  for i := 0 to High(Values) do
    Matrix[Row, i] := Values[i];
end;


SetLineVec(Matrix, 0, [2, 2, 2, 2, 2]);
SetLineVec(Matrix, 1, [2, 1, 1, 1, 2]);
SetLineVec(Matrix, 2, [2, 1, 0, 1, 2]);
SetLineVec(Matrix, 3, [2, 1, 0, 1, 2]);
SetLineVec(Matrix, 4, [2, 1, 1, 1, 2]);
SetLineVec(Matrix, 5, [2, 2, 2, 2, 2]);

mirko2000 3. Dez 2003 09:35

Re: Statische Arrays mit type und Wertzuweisung?
 
EDIT: Hat sich schon erledigt! DANKE!


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz