Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: TArray<string> als const im Record deklarieren

  Alt 5. Dez 2019, 18:56
Warum muß diese Konstante denn ein dynamisches Array und kann nicht statisch sein? (OK, bei Zuweisung an ein dynamisch Array muß dann umkopiert werden)

Kann Delphi nicht auch inzwischen bei statischen Arrays die Länge selbst bestimmen?
const X: array[] of string = ('1', '2');



Zitat:
Delphi-Quellcode:
var
  a1: array of String;
  a2: TArray<String>;
Array of string definiert an dieser stelle einen neuen Typ und der ist dann mit dem anderen Array nicht zuweisungskompatibel (auch wenn die Typen intern ja eigentlich gleich sind-
Entsprechend dem obrigen Beispiel das, was der Compiler daraus macht:
Delphi-Quellcode:
type
  T1: array of String;
  T1: array of String;
var
  a1: T1;
  a2: T2;
Delphi-Quellcode:
type
  Tx: array of String; // globaler Typ aus TArray<T>
var
  a1: Tx;
  a2: Tx;

Bei den Generics ala TArray<T> werden die gleichgeschriebenen Typen überall auch gleich identisch verwendet, also mit dem selben Typen der ersten Deklaration.



Zitat:
Delphi-Quellcode:
type
  TRec = record
  const
    MyArray: TArray<String> = ['First','Second','Third'];
  end;
Bei Dem dachte ich zuerst an
Delphi-Quellcode:
const
  Rec = record
    MyArray: array[0..2] of string;
  end = (MyArray: ('First','Second','Third'));
$2B or not $2B

Geändert von himitsu ( 5. Dez 2019 um 18:58 Uhr)
  Mit Zitat antworten Zitat