AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Prism Mehrere Aufzählungstypen mit gleichen Membern
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Aufzählungstypen mit gleichen Membern

Ein Thema von xaromz · begonnen am 10. Sep 2006 · letzter Beitrag vom 10. Sep 2006
Antwort Antwort
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#1

Mehrere Aufzählungstypen mit gleichen Membern

  Alt 10. Sep 2006, 10:40
Hallo,

warum ist es nicht möglich, mehrere Aufzählungstypen zu deklarieren, die Member mit glechen Namen besitzen?

Z. B. so:
Delphi-Quellcode:
type
  HorizontalAlignment = (None, Left, Center, Right, Block);
  VerticalAlignment = (None, Top, Center, Bottom);
Sowohl bei None als auch bei Center mackert Delphi. Dabei sollte es doch egal sein, da ich die Member mit dem qualifizierten Namen eindeutig identifizieren könnte .

Gibt es hierfür eine Lösung?

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Mehrere Aufzählungstypen mit gleichen Membern

  Alt 10. Sep 2006, 11:14
Hallo,

ich arbeite nicht mit .NET, aber None und Center - enum values, quasi implizite Konstanten - im selben Namespace (Unit)? Wie sieht da der qualifizierte Name aus?

Grüße vom marabu
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Mehrere Aufzählungstypen mit gleichen Membern

  Alt 10. Sep 2006, 11:37
Hallo,
Zitat von marabu:
ich arbeite nicht mit .NET, aber None und Center - enum values, quasi implizite Konstanten - im selben Namespace (Unit)? Wie sieht da der qualifizierte Name aus?
z. B. so:
Delphi-Quellcode:
if HAlign = HorizontalAlignment.Center then
begin
  // Tu was
end;
Wobei mir das Case-Template leider folgenden Code präsentiert:
Delphi-Quellcode:
var
  HAlign: HorizontalAlignment;
begin
  case HAlign of
    Unit1.None: ;
    Unit1.Left: ;
    Unit1.Center: ;
    Unit1.Right: ;
  end;
end;
Beise Varianten funktionieren.
Da frage ich mich, welches ist jetzt der "echte" Name. In .Net wird das eigentlich nicht mit dem Namespace genutzt, sondern mit dem Aufzählungstypen (also HorizontalAlignment.Center).

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Mehrere Aufzählungstypen mit gleichen Membern

  Alt 10. Sep 2006, 12:16
Zitat von xaromz:
Wobei mir das Case-Template leider folgenden Code präsentiert:
Delphi-Quellcode:
var
  HAlign: HorizontalAlignment;
begin
  case HAlign of
    Unit1.None: ;
    Unit1.Left: ;
    Unit1.Center: ;
    Unit1.Right: ;
  end;
end;
Beise Varianten funktionieren.
Da frage ich mich, welches ist jetzt der "echte" Name. In .Net wird das eigentlich nicht mit dem Namespace genutzt, sondern mit dem Aufzählungstypen (also HorizontalAlignment.Center).
Moin,

Delphi generiert dir für jeden Wert deines Enum ene globale Kontante.
Die wiederum werden in Delphi.Net so umgesetzt, dass du pro Unit eine Klasse hast, in der sie als Konstante (oder statische Felder ) deklariert sind.
Wenn du also zwei Enums in der gleichen Unit definiert, die Überschneidungen in ihren Weten haben, würde ich davon ausgehen, dass er dir mit Anlauf ins Gesicht springt...
Vllt kann man ja mit Delphi.Net 2007 .Net Apps schreiben ohne ständig wieder in die Delphi32-Welt gerissen zu werden.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Mehrere Aufzählungstypen mit gleichen Membern

  Alt 10. Sep 2006, 12:21
Hallo,

ich hatte gehofft, dass Du hier antwortest.
Zitat von Elvis:
Delphi generiert dir für jeden Wert deines Enum ene globale Kontante.
Die wiederum werden in Delphi.Net so umgesetzt, dass du pro Unit eine Klasse hast, in der sie als Konstante (oder statische Felder ) deklariert sind.
Wenn du also zwei Enums in der gleichen Unit definiert, die Überschneidungen in ihren Weten haben, würde ich davon ausgehen, dass er dir mit Anlauf ins Gesicht springt...
Vllt kann man ja mit Delphi.Net 2007 .Net Apps schreiben ohne ständig wieder in die Delphi32-Welt gerissen zu werden.
Ach verdammt...

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  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 07:35 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