![]() |
dynamisches array wenn array eigenes objekt
hallo,
ich habe nen 2-dim-array als eigenes objekt definiert, um es so leichter als parameter an funktionen zu übergeben.
Delphi-Quellcode:
würde jetzt aber gerne die größe (ist quadratisch) variabel halten, also als dynamisches array - am besten auch die dimension, wobei jede dimension gleich groß wäre.
type
TMyArray = Array[1..6,1..6] of Integer; weiss wer wie ich das am besten machen kann? könnte mir vorstellen, dass das mit der dimension weit aus schwieriger ist, als mit der größe, die größe ist aber auch wichtiger, das muss doch auch iwie zu machen sein... DANKE schonmal - zumindet fürs lesen;) |
Re: dynamisches array wenn array eigenes objekt
Suchst du die Funktion SetLength()? Ansonsten verstehe ich dein Problem nicht :drunken: :stupid:
|
Re: dynamisches array wenn array eigenes objekt
ich glaube nicht, jedenfalls funzt das mit der nicht so wies soll, hab folgendes ausprobiert, was mir aber nciht wirklich weiterhalf:
Delphi-Quellcode:
da bekomme ich ne fehlermeldung wegen zugriffsverletzung... :wall:
type
TMyArray = Array of Array of Integer; TMyHauptKlasse=class private procedure bla; end; implementation var Feld: TMyArray; procedure TMyHauptklasse.bla; begin SetLength(Feld,6,6); end; |
Re: dynamisches array wenn array eigenes objekt
Existiert den eine Instanz von TMyHauptKlasse?
|
Re: dynamisches array wenn array eigenes objekt
ok, mein fehler, hab mit falschen werten getestet -.- sorry.
aber das problem mit dem variabel halten der dimension bleibt... hat da wer ne idee? danke schonmal fürs weiterhelfen ;) |
Re: dynamisches array wenn array eigenes objekt
Das Problem ist doch gelöst. Dimensionsfreie Deklaration, und in der Implementierung mit SetLength() die Größe setzen. Das ist der einfachste Weg überhaupt, und im Kern auch der einzige (man kanns nur komplizierter hinschreiben, wer will das schon). Wovon du dich halt verabschieden musst, sind beliebige untere Grenzen. 0 ist immer dein erster Index, was nun aber nicht wirklich ein Problem sein sollte denke ich.
|
Re: dynamisches array wenn array eigenes objekt
Delphi-Quellcode:
müsste eher
procedure TMyHauptklasse.bla;
begin SetLength(Feld,6,6); end;
Delphi-Quellcode:
sein.
procedure TMyHauptklasse.bla;
var i: Integer; begin SetLength(Feld, 6); for i := 0 to High(Feld) do SetLength(Feld[i], 6); end; |
Re: dynamisches array wenn array eigenes objekt
Zitat:
Delphi-Quellcode:
mfg
// Pseudocode:
type TVarDimListDimension = class(TObjectList) ... end; TVariableDimList = class(TPersistent) private FDimensions: Integer = 1; FSize: Integer; // Länge je Dimension FFirstDimesion: TVarDimListDimension; // hält ggf. weitere TDimension Objekte. Die letzte Ebene hält die eigentlichen Daten public property Demensions read FDimensions write SetDimensions; property Size read FSize write SetSize; Items[Index: array of Integer] read getItem write SetItem; default; // Length(Index) = FDimensions; leider muss das zur Laufzeit geprüft wedren, aber anders gehts nicht; auch der Rage-Test muss hier gemacht wedren... end; Christian |
Re: dynamisches array wenn array eigenes objekt
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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