Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Variable in Array (https://www.delphipraxis.net/49341-variable-array.html)

Yheeky 9. Jul 2005 16:44


Variable in Array
 
Hi,

ich hab eine Landkarte mit Tiles die eine definierbare Größe hat. Standard ist X=10 und Y=10. Nun möchte ich ein Array erstellen, in alle Felder dieser Karte gespeichert werden.

Delphi-Quellcode:
type
    TFeldDaten = record
      FeldArt : Integer;
    end;

type
    TFelder = record
      FeldX, FeldY : Integer;
      Felder : Array [1..100] of TFeldDaten;
    end;
Anstelle von Array [1..100] möchte ich nun eine Variable hineinsetzen, falls der User die Karte auf X=20 und Y=20 erhöht. Dann müsste dort ja Array [1..400] hin. Sobald ich da eine Variable reinschreibe sagt er "Undefinierter Bezeichner". Kennt jemand die Lösung für mein Problem?

Gruß Yheeky

[edit=alcaeus]code- durch delphi-Tags ersetzt. In Zukunft bitte die richtigen Tags verwenden, danke. Mfg, alcaeus[/edit]

Khabarakh 9. Jul 2005 16:48

Re: Variable in Array
 
Um die Dimensionen zur Laufzeit zu verändern, musst du ein Delphi-Referenz durchsuchendynamisches Array benutzen.

[add] Oder TFeldDaten gleich als Klasse und Felder als TObjectList :wink: .

sniper_w 9. Jul 2005 16:50

Re: Variable in Array
 
SetLength() ist das wes du brauchst. Und obige Link ;).

SirThornberry 9. Jul 2005 16:51

Re: Variable in Array
 
wenn du die declaration mit einem staatichen Array haben willst geht da nur eine Konstante.
Für deinen Anwendungsbereich wäre ein Dynamiches Array die richtige Lösung.
Delphi-Quellcode:
type
    TFeldDaten = record
      FeldArt : Integer;
    end;

type
    TFelder = record
      FeldX, FeldY : Integer;
      Felder : Array of TFeldDaten;
    end;
[...]
YourVariable := 400; //als Beispiel mal 400
SetLength(YourTFelderRecord.Felder, YourVariable);
beachten musst du dabei aber das dein Array jetzt 0 basierend ist (also von 0 bis 399)

//Edit wegen rotem kasten: beide vorangegangene Posts zusammengefasst


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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 by Thomas Breitkreuz