Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Arrayvariable (https://www.delphipraxis.net/142238-arrayvariable.html)

daNiii 24. Okt 2009 10:09


Arrayvariable
 
Hallo!
in meinem Programm hätte ich gerne eine arrayvariable verwendet,
diese soll aber variable bleiben.

hier mein Beispiel:
ich definiere die Variable:
Feld: array[0..10, 0..12]
ich möchte aber anstatt des 10ers oder des 12 eine Variable eingeben.
funktioniert aber nicht, da ein Konstantaursdruck benötigt wird.

Weis jemand wie man diese Fehlermeldung umgehen kann?

Tryer 24. Okt 2009 10:19

Re: Arrayvariable
 
Mehrdimensionale dynamische Arrays:
Delphi-Quellcode:
MyArray : array of array of Foo;
SetLength(MyArray, 10, 12);

himitsu 24. Okt 2009 10:21

Re: Arrayvariable
 
Zitat:

Zitat von daNiii
ich möchte aber anstatt des 10ers oder des 12 eine Variable eingeben.
funktioniert aber nicht, da ein Konstantaursdruck benötigt wird.

Ähhh, was möchtest du genau machen?
Zeig mal bitte etwas Code, von dem was der Compiler nicht wollte, denn ich kann mir da grad einfach nichts unter dieser Beschreibung vorstellen.

daNiii 24. Okt 2009 10:36

Re: Arrayvariable
 
Delphi-Quellcode:
Spalten, Zeilen: integer; (globale Variablen

procedure TForm1.FormShow(Sender: TObject);
begin

Spalten:= 10;
Zeilen:= 10;

Spielbrettaufbauen();
end;


procedure TForm1.Spielbrettaufbauen();
var
 horizontal,vertikal: integer;
 Feld: Array[0..Spalten, 0..Zeilen] of Tshape;   //hier kommt der Fehler

begin

for horizontal := 1 to Spalten do begin
Abstand_hor:= Abstand_hor + Breite;
    Abstand_ver:= Basis;
    for vertikal := 1 to Zeilen do
    begin
       Abstand_ver:= Abstand_ver + Hoehe;
       //das Shape wird formatiert
       Feld[horizontal, vertikal] := Tshape.create(self);
       Feld[horizontal, vertikal].Parent:= form1;
       Feld[horizontal, vertikal].height:= Hoehe;
       Feld[horizontal, vertikal].width:= Breite;
       Feld[horizontal, vertikal].top:= Position_top + Abstand_ver;
       Feld[horizontal, vertikal].left:= Position_left + Abstand_hor;
       Feld[horizontal, vertikal].OnMouseUp:= Fillshape;
    end;
end;

SirThornberry 24. Okt 2009 10:44

Re: Arrayvariable
 
@daNiii: Kannst du deinem Beitrag bitte einen aussagekräftigeren Titel geben der ansatzweise erahnen lässt worum es in dem Thema geht? Dadurch haben andere mit dem gleichen Problem den Vorteil dieses Thema (mit eventueller Lösung) über die Suche (schneller) zu finden. :)

himitsu 24. Okt 2009 10:49

Re: Arrayvariable
 
Diese statischen Arrays werden zur Compilierungs-Zeit übersetzt und da ist der Wert für die Konstanten noch unbekannt.

Also entweder du nimmst ein dynamisches Array und setzt die Größe um Code (siehe Tryer),

oder du machst Konstanten daraus, so wie es der Compilier, für diesem Fall des statischen Arrays, verlangt
Delphi-Quellcode:
const
  Spalten = 10;
  Zeilen = 10;

procedure TForm1.FormShow(Sender: TObject);
begin
  Spielbrettaufbauen();
end;

daNiii 24. Okt 2009 11:23

Re: Arrayvariable
 
alos Konstanten geht schon mal garnicht..
den der Wert muss anpassbar sein...
wie geht das mit dem dynamischen arrays?

Medium 24. Okt 2009 11:24

Re: Arrayvariable
 
Siehe Beitrag #2 :roll:

DeddyH 24. Okt 2009 11:28

Re: Arrayvariable
 
Und vorsorglich weise ich schon einmal darauf hin, dass man gerade bei dynamischen Arrays den Index auf <= High(Array) prüfen sollte, bevor man darauf zugreift.

Medium 24. Okt 2009 11:29

Re: Arrayvariable
 
Och Mönsch! Ich hab mich schon so auf die kommenden Off-By-One Fragen und Diskussionen gefreut! Hatten wir schon verhältnismäßig lange nicht mehr :stupid: :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.
Seite 1 von 2  1 2      

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