AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Generics ToArray: TArray vs. array of

Ein Thema von christophspaeth · begonnen am 6. Feb 2014 · letzter Beitrag vom 6. Feb 2014
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Generics ToArray: TArray vs. array of

  Alt 6. Feb 2014, 08:54
Nein. Da steht ja nur
  • Alias: type TMeinAlias = TMeinTyp
  • Neuer, inkompatibler Typ: type TMeinNeuerTyp = type TMeinTyp

TCaption ist ja beispielsweise (unsinnigerweise, IMO) ein neuer Typ (entgegen der Doku). Allerdings wird der trotzdem ohne Murren implizit von und nach String gecasatet.

Ich habe die Logik dahinter nie durchblickt. Geht es nur für PODs und meinetwegen Strings?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#2

AW: Generics ToArray: TArray vs. array of

  Alt 6. Feb 2014, 09:00
Delphi-Quellcode:
type
  TIntArray1 = array of integer;
  TIntArray2 = array of integer;
Damit deklariert man 2 Typen mit jeweils eigenen Typinformationen.
Delphi-Quellcode:
type
  TIntArray1 = array of integer;
  TIntArray2 = type TIntArray1;
dto.
Delphi-Quellcode:
type
  TIntArray1 = array of integer;
  TIntArray2 = TIntArray1;
Hier ist TIntArray2 lediglich ein Typalias, es werden keine eigenen Typinformationen generiert. Variante 2 bietet noch die Möglichkeit, Konstanten- oder Wertparameter beider Typen kompatibel zu behandeln, Variante 1 aber nicht, da es sich um 2 völlig voneinander unabhängige Typen handelt, auch wenn diese inhaltlich identisch sind.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
christophspaeth

Registriert seit: 7. Mär 2008
73 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Generics ToArray: TArray vs. array of

  Alt 6. Feb 2014, 09:03
Hallo,

danke für die Antworten.

Wenn ich anstelle von einem eigenen Typen mit TArray<> arbeite compiliert es zumindest. Ob das ganze dann (sauber) über SOAP übertragen wird konnte ich noch nicht ausprobieren. Falls nicht gehe ich halt wieder auf meinen eigenen Typ zurück und verändere die Getter entsprechend.

Zum Verständnis trägt der Artikel auch bei mir nur begrenzt bei - nach dem Artikel müssten ja beide Schreibweisen gleichwertige Aliase für array of TMyType sein.

DeddyH: Das heißt, dass ein type auf ein array of eben mehr als nur ein im Artikel beschriebenr Alias ist?
Christoph Späth
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#4

AW: Generics ToArray: TArray vs. array of

  Alt 6. Feb 2014, 09:15
Ein Alias ist es dann, wenn Du einfach nur einen bereits bestehenden Typ zuweist (siehe Variante 3 oben). Dein Problem ist, dass Du ToArray von TList verwenden willst, dieses ein TArray (eine Klasse) zurückgibt, Du aber einfach nur ein dynamisches Array deklariert hast. Und das kann logischerweise nicht funktionieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
christophspaeth

Registriert seit: 7. Mär 2008
73 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Generics ToArray: TArray vs. array of

  Alt 6. Feb 2014, 09:27
TArray ist in der System.pas aber als   TArray<T> = array of T; definiert, also eben gerade keine Klasse.

Du hattest ja geschriben, dass
Delphi-Quellcode:
type
  TIntArray1 = array of integer;
  TIntArray2 = array of integer;
zwei verschiedene, neue (und damit "inkompatible") Typen definiert (was ich in dem von dir verlinkten Artikel aber eben nicht herauslesen kann), wohingegen
Delphi-Quellcode:
type
  TInt1 = integer;
  TInt2 = integer;
lediglich zwei gleichbedutende Aliase für Integer erstellt. Wenn man weiß, dass es hier einen Unterschied in der Bedeutung der Typ- bzw. Aliasdeklaration gibt ist das Verhalten verständlich. Danke.
Christoph Späth
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#6

AW: Generics ToArray: TArray vs. array of

  Alt 6. Feb 2014, 09:49
Ich hatte hier nachgesehen, und danach ist es eine Klasse, allerdings in einer anderen Unit (Generics.Collections).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Generics ToArray: TArray vs. array of

  Alt 6. Feb 2014, 09:50
Genau das ist der Punkt den ich auch nicht verstehe.

Weiterhin: TArray ist wirklich keine Klasse. Sieht man auch wenn mein eine Helferklasse bauen will. Ein "record helper" geht, ein "class helper" für einen TArray-Typ nicht.

Das aus Generics.Collections ist nicht das gleiche, das ist nur für die Klassenmethoden zum Sortieren und sonstwas von Arrays gedacht.
  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 00:37 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