Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Array Properties

  Alt 25. Okt 2022, 16:29
Wenn du es als type außerhalb definierst hast du es innerhalb leichter.
Ja, array of ... deklariert jedes mal einen neuen Typ und untereinander sind diese Typen nicht zuweisungskompatibel,

Den fertigen Typ vorher deklariert, löst Propbleme, bezüglich der Kompatibilität.
Für String, Byte und Anderes gibt es bereits vordefinierte Typen, ala TBytes oder TStringDynArray.

ABER der generische Type TArray<> ist hier eine Ausnahme, da der Compiler alle TArray<> vom selben Typ im Programm gleichzieht.
Delphi-Quellcode:
// siehe System.pas

type
  TArray<T> = array of T;

Ja, SetLength will eine Variable, aber das ist ja ein Property.
Du mußt das also in der Klasse machen,
oder kein Property verwenden, sondern das Feld/Variable "FMeinArray" ins Public.
Delphi-Quellcode:
  public
    function Length: Integer;
    procedure SetLength(Len: Integer;)
    property Items[Index: Integer] : AndereKlasse read GetItem write SetItem; default; // kann auch sein, dass ohne das ; vor dem default
  end;
oder
Delphi-Quellcode:
  public
    property Length: Integer read GetLength write SetLength;
    property Items[Index: Integer] : AndereKlasse read GetItem write SetItem; default;
  end;
PS: DEFAULT;
Dann geht auch MeineKlasse1[123] anstatt MeineKlasse1.MeinArray[123] .
Ja, die Default-Directive hat bei Array-Property eine andere Bedeutung, wie für normale Property.


PSS:
Delphi-Quellcode:
  TMeineKlasse1 = class(TObjectList<AndereKlasse>)
  private
  public
  end;

  // oder wenn ohne eigenen Code
  TMeineKlasse1 = TObjectList<AndereKlasse>;
$2B or not $2B

Geändert von himitsu (25. Okt 2022 um 16:40 Uhr)
  Mit Zitat antworten Zitat