Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: EMB DCE 12 - Unterschied zwischen v: TArray<T> und v: Array of T ?

  Alt 9. Okt 2024, 18:17
Als "Typ"-Deklaration das Gleiche, denn
Zitat:
Delphi-Quellcode:
type
  TArray<T> = array of T;
Aber generische Typen werden global "identisch" behandelt,
während es nicht-generisch nur "gleich/ähnlich", aber nicht kompatibel ist.

Delphi-Quellcode:
type
  A = array of Integer;
  B = array of Integer;
  C = TArray<Integer>;
  D = TArray<Integer>;
A und B sehen gleich aus, sind allerdings nur gleich aber nicht zuweisungs-kompatibel, da jeweils eigene TypeInfo/RTTI.
Ebenso A/B und C.

C und D sind aber identische Alias des selben generischen Types.
Delphi-Quellcode:
a := b; // geht nicht
a := c; // geht nicht
c := d; // geht


Und als Parameter, ist array-of ein Open-Array, also was ganz Anderes, zu dem aber ALLE anderen Array-Typen und Array-Konstanten zuweisungskompatibel sind.
https://docwiki.embarcadero.com/RADS...en/Open_Arrays

Delphi-Quellcode:
//type X = array[0..666] of Integer;
//procedure Test(arr: array of Integer);

// geht alles
Test(a);
Test(c);
Test([1, 2, 3]);
Test(x);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Okt 2024 um 18:25 Uhr)
  Mit Zitat antworten Zitat