Thema: Delphi Delphi Namespaces

Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Delphi Namespaces

  Alt 30. Jul 2014, 17:47
Das #2 könnte vielleich ein Folgefehler sein.
Genauso isses. Der Fehler hat rein gar nichts mit den "punktierten Unitnamen" zu tun.
Das passiert auch bei ner Unit1, in den du diesen Code schreibst.

Da mir das Zitat aus der Dokumentation sehr komisch vorkam, hab ich das mal ausprobiert.
Meine Vermutung: Doku Altlasten von Delphi.NET (da gibt es einige).

Da es keine Namespaces in Delphi gibt, kann es auch keinen Namespace geben,
in dem ein Symbol nur einmal vorkommen darf.
Das ist nach wie vor auf eine Unit beschränkt mehr nicht.

Wenn du also in Klasse1 die Klasse2 nutzen willst und umgekehrt, kommst du um eine gemeinsame Unit nicht drumherum.

Ja, es sind nur "Punkte", aber über die Standard-"Namespaces" kann man Teile davon Variant halten und projektbezogen umschalten.
siehe FMX.Forms und VCL.Forms, wo man im Code nur Forms verwendet und dann die jeweilige Unit oassend zum Projekt verwendet wird.
Genau. Lustigerweise ist die Funktionsweise ja nichtmal wie bei Namespaces. In Delphi kannste den vorderen Teil des Unitnamens weglassen (das ist dann aber mehr son "der Compiler versucht alle möglichen Kombinationen von Unitnamen aus, bis er was findet"). Daher auch die Empfehlung die von Embarcadero verwendeten "Namespaces" nicht in eigenen Units zu benutzen. Da könnte es halt schnell mal nen Konflikt geben.
Bei Namespaces hat der Unitname ja erstmal auch nix mit dem Namespace zu tun. Kannste locker in ne foo.cs eine Klasse für den Namespace Himitsu.LibraryBar.Whatever hinzufügen. Interessanterweise brauchst ja nichma die namespaces ins using schreiben, das wird ja über das einbinden der benötigten assemblies erledigt. Musste den Krams halt nur voll qualifizieren. Daher kann dir nen VS ja auch den entsprechenden Namespace vorschlagen, wenn du einen Typen benutzt, dessen Namespace noch nicht im using steht.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (30. Jul 2014 um 17:58 Uhr)
  Mit Zitat antworten Zitat