AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Feststellen dass neuer Typ nur ein Alias ist
Thema durchsuchen
Ansicht
Themen-Optionen

Feststellen dass neuer Typ nur ein Alias ist

Offene Frage von "Der schöne Günther"
Ein Thema von Der schöne Günther · begonnen am 26. Jun 2015 · letzter Beitrag vom 14. Jul 2015
Antwort Antwort
Seite 1 von 2  1 2      
Der schöne Günther

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

Feststellen dass neuer Typ nur ein Alias ist

  Alt 26. Jun 2015, 09:58
Delphi-Version: XE7
Angenommen ich habe eine Typdefinition
type TMyType = type Single; Es ist also kein einfacher Alias wie type TMyType = Single .

Wie kann ich nun, zur Laufzeit, feststellen dass TMyType in Wirklichkeit nichts anderes ist als ein Single? Ich kann ja auch problemlos in eine Single-Variable einen TMyType -Wert reinstecken und es kompiliert.

(Ich lasse meine Motivation dafür absichtlich weg um es nicht unnötig kompliziert zu machen)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Feststellen dass neuer Typ nur ein Alias ist

  Alt 26. Jun 2015, 10:01
Die beiden Typen sind für Delphi 2 verschiedene Typen
Markus Kinzler
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Feststellen dass neuer Typ nur ein Alias ist

  Alt 26. Jun 2015, 10:06
So verschieden können sie aber wohl doch nicht sein wenn folgendes geht, oder?

Delphi-Quellcode:
type
   TNewType = type Single;
var
   mySingle:   Single;
   myNewType:   TNewType;
begin
   myNewType := mySingle;
   mySingle := myNewType;
end.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Feststellen dass neuer Typ nur ein Alias ist

  Alt 26. Jun 2015, 10:10
Für den Delphicompiler schon.

Z.B. ist auch folgendes nicht kompatibel:

Delphi-Quellcode:
type
  TStringArray: Array of string;
...
var
  a1: TStringArray;
  a2: Array of String;

...

  a1 := a2;
Markus Kinzler
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Feststellen dass neuer Typ nur ein Alias ist

  Alt 26. Jun 2015, 10:17
Die übertriebene Typsicherheit bei Arrays hätte ich spontan als anderes Thema gesehen, aber ich komme frisch aus dem Urlaub- Vielleicht ist mein Kopf noch nicht wieder ganz da.

Heißt das- Der "Delphi-Compiler" kann es, der Mensch vor der Tastatur allerdings nicht? Mann, ich lege einfach zwei lokale Variablen an und weise sie einander zu. Und vergleiche SizeOf(..) . Sollte jemand die Definition für TMyType eines Tages von Single auf Double ändern wird im dieser Code hier um die Ohren fliegen.

Das muss wohl reichen, besser scheint es ja nicht zu gehen.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

AW: Feststellen dass neuer Typ nur ein Alias ist

  Alt 26. Jun 2015, 10:17
Die beiden Typen sind für Delphi 2 verschiedene Typen
Aber wie sieht es ab Delphi 3 aus? (SCNR)

So verschieden können sie aber wohl doch nicht sein wenn folgendes geht, oder?
Das zwei Typen zuweisungskompatibel sind, heißt nicht das sie "gleich" sind. Denk dir zum Bespiel einen BCD-Zahlentyp und einen Integer; die könnten zuweisungskompatibel sein (k.A. ob man das in Delphi hinbekommt), sind aber intern völlig unterschiedliche Datentypen.

Geändert von BUG (26. Jun 2015 um 10:20 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Feststellen dass neuer Typ nur ein Alias ist

  Alt 26. Jun 2015, 10:25
Das zwei Typen zuweisungskompatibel sind, heißt nicht das sie "gleich" sind.
Du hast natürlich Recht. Noch besseres Beispiel: Ich kann einen Integer in einen Double reinstecken (diese Richtung). Aber sonst haben die eigentlich nichts gemeinsam.

Warum ist die Welt nur so schlecht...
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#8

AW: Feststellen dass neuer Typ nur ein Alias ist

  Alt 26. Jun 2015, 10:30
Sorry für OT, aber dass kann ich mir jetzt nicht verkneifen.
Die beiden Typen sind für Delphi 2 verschiedene Typen
Aber wie sieht es ab Delphi 3 aus? (SCNR)
Ich musste den Satz von Markus 3mal lesen, um ihn so "misszuverstehen", wie man es scheinbar kann.

Der gleiche Wort-Witz hätte nicht mit Lazarus funktioniert.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#9

AW: Feststellen dass neuer Typ nur ein Alias ist

  Alt 26. Jun 2015, 10:36
Die Ausgangsfrage lässt sich allerdings beantworten:

Delphi-Quellcode:
type
  myTyp = Single;
var
  ti1, ti2: ^TTypeInfo;
begin
  ti1 := TypeInfo(myTyp);
  ti2 := typeInfo(Single);
  if ti1.Name <> ti2.Name then
    writeLn('verschieden');
Sorry, mit myTyp = type Single; klappt das nicht.

Geändert von Mikkey (26. Jun 2015 um 10:41 Uhr) Grund: Unsinn erzählt
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Feststellen dass neuer Typ nur ein Alias ist

  Alt 26. Jun 2015, 10:46
So verschieden können sie aber wohl doch nicht sein wenn folgendes geht, oder?

Delphi-Quellcode:
type
   TNewType = type Single;
var
   mySingle:   Single;
   myNewType:   TNewType;
begin
   myNewType := mySingle;
   mySingle := myNewType;
end.
Ich glaube, mit var-Parametern solltest du einen Unterschied sehen.
Uli Gerhardt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:55 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