Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Namespaces


Symbroson - Mo 25.09.17 18:01
Titel: Namespaces
Hallo,

Ich möchte für die Lesbarkeit meiner Programme sogenannte 'Namespaces' (mir bekannt durch C/C++) anlegen. Von Delphi kenne ich bisher aber nur Klassen, die ich als Typ verwenden kann. Welche Möglichkeiten gibt es also in Delphi diesbezüglich?

Vorteil dessen: Ich muss die im Namespace enthaltenen Variablen/Funktionen nur ein mal deklarieren

Nutzen: Zusammenfassen von Variablen/Funktionen



Zur Verständlichkeit ein beispiel:


aufgrund meiner bisherigen Delphi-Kenntnisse:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
type TDrawAPI = class
    procedure Render;
    function Distance(a,b:TPoint):float;
end;

var DrawAPI:TDrawAPI;
...
procedure DrawAPI.Render;
    begin
        ...
    end;

    function DrawAPI.Distance(a,b:TPoint):float;
    begin
        ...
    end;
...
DrawAPI.Render;

gewünscht:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
type DrawAPI = namespace
    procedure Render;
    begin
        ...
    end;

    function Distance(a,b:TPoint):float;
    begin
        ...
    end;
end;
...
DrawAPI.Render;

Anmerkungen:
1. Ich garantiere nicht für die Richtigkeit des obigen Codes, mir geht es ums Prinzip.
2. Bin neu in dem Forum - bin offen für Hinweise bzgl der Nutzung des Forums hier als pm :)

Danke im Vorraus :)

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt


Mathematiker - Mo 25.09.17 21:32

Hallo Symbroson und :welcome: !

@EE: Da ich keine Ahnung habe von dem Thema, habe ich unseren "Neuen" auf die Entwickler-Ecke "gelenkt"; mit dem Hinweis, dass dort die Profis gern, schnell und kompetent helfen.
Eine große Bitte: Irgendeiner wird doch wissen worum es geht. Wir wollen doch die neuen Hilfesuchenden hier behalten.

LG Steffen


Narses - Mo 25.09.17 22:07

Moin und :welcome: in der EE!

Irgendwie kann ich deinem Beispiel noch nicht so richtig folgen. :lupe: Das, was deiner Vorstellung von einem "Namespace" am nächsten in Delphi kommt, ist (vermutlich) eine Unit. Hier kannst du die gewünschten Deklarationen, Definitionen, Typisierungen, etc.pp. "sammeln" und dann später mit vorangestelltem Unit-Namen ansprechen. Schau dich einfach mal unter diesem Stichwort um.

Mir scheint aber eher, du hast noch Probleme die automatisch in einer GUI-Form-Klasse erzeugten Inhalte von der Funktion zu trennen (also die Oberfläche von der Funktion). :idea: Das hat so gesehen nichts mit Namespaces zu tun. :nixweiss:

Vielleicht hab ich dich aber auch falsch verstanden. Dann müsstest du nochmal genauer erklären, was du eigentlich hast und wie genau du es "anders" haben willst. :les:

cu
Narses


Symbroson - Mo 25.09.17 22:21

Stimmt, als Unit müsste das funktionieren. Das muss dann aber eine extra Datei sein wenn ich mich nicht irre.
Danke :)

Ps: die Zeichenfunktionen waren nur ein Beispiel - mir ist grad nix besseres eingefallen wie eben zB. eine Zeichenbibliothek. Sinn des Namespaces wäre eben die Funktionen, Variablen und Konstanten die in dieser Bobliothek definiert sind zusammenzufassen.


Narses - Mo 25.09.17 22:24

Moin!

user profile iconSymbroson hat folgendes geschrieben Zum zitierten Posting springen:
Das muss dann aber eine extra Datei sein wenn ich mich nicht irre.
Jap. ;)

user profile iconSymbroson hat folgendes geschrieben Zum zitierten Posting springen:
Danke :)
:beer:

cu
Narses


Symbroson - Fr 27.04.18 21:02

Eine andere Lösung wären Klassen mit class procedures bzw functions - damit kann man ein Namespace generieren was dem c++ Namespace ziemlich nahe kommt :)

darauf bin ich letztens erst gestoßen