AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein EMB DCE 12 - Unterschied zwischen v: TArray<T> und v: Array of T ?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von paule32.jk · begonnen am 9. Okt 2024 · letzter Beitrag vom 9. Okt 2024
Antwort Antwort
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#1

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

  Alt 9. Okt 2024, 17:05
Hallo,
in Zusammenhang mit Templates und Array's habe ich folgende zwei Möglichkeiten der Codierung bemerkt, und frage mich nun, was der Unterschied zwischen:

Delphi-Quellcode:
constructor Create(v: Array of T); overload;
...
constructor QChar<T>.Create<v: Array of T);
und:
Delphi-Quellcode:
constructor Create(v: TArray<T>); overload;
...
constructor QChar<T>.Create(v: TArray<T>);
ist.
Beide Möglichkeiten können vom Compiler übersetzt werden.
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet

Geändert von paule32.jk ( 9. Okt 2024 um 17:08 Uhr)
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
269 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 9. Okt 2024, 17:15
Erstes Ergebnis der Google-Suche.
  Mit Zitat antworten Zitat
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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz