Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Projektstruktur (nicht alles in einem Ordner) (https://www.delphipraxis.net/205362-projektstruktur-nicht-alles-einem-ordner.html)

himitsu 1. Sep 2020 15:02

AW: Projektstruktur (nicht alles in einem Ordner)
 
Die Pseudo-Namespaces mit . im Dateinamen haben noch den Vorteil, dass man dort Defaultnamespaces als Prefix verwenden kann.
Mir wäre von der Struktur im Verzeichnis es lieber, wenn man die auch als Postfix nutzen könnte.

Wird z.B. für VCL oder FMX verwendet
> Forms -> VCL.Forms oder FMX.Forms
oder für dein "einfachen" Umstieg bei altem Code.
> Windows -> Winapi.Windows
> Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell



My.Unit ins Uses schreiben und je nach Ziel wird das verwendet
My.Unit.Windows
My.Unit.iOS
My.Unit.Linux

So geht es, aber es ist sch***
Windows.My.Unit
iOS.My.Unit
Linux.My.Unit

Rollo62 1. Sep 2020 15:22

AW: Projektstruktur (nicht alles in einem Ordner)
 
@himitsu

Verstehe nicht genau was Du meinst,
sollte etwa das hier

My.Unit ins Uses schreiben und je nach Ziel wird das verwendet
My.Unit.Windows
My.Unit.iOS
My.Unit.Linux

sich das richtige Unit raussuchen, je nach OS, ohne {$IF} ?

Meinst Du das sowas jetzt schon in Delphi irgendwie geht, neee, das kann doch nicht sein, oder ?

Falls doch wäre das natürlich super.

Ich nutze auch Postfixes, aber noch mehr als nur FMX/VCL.
Vorne steht bei mir die Funktion, also das was ich erstmal eigentlich will,
weiter nach hinten kommen dann die Spezialisierungen.
Media.Audio.Play
Media.Audio.Play.Win
Media.Audio.Play.Macos
Media.Audio.Rec
Media.Audio.Rec.Win
Media.Audio.Rec.Macos

notfalls kann ich dahinter dann noch das Framework schreiben FMX/VCL
Media.Audio.Play
Media.Audio.Play.Win.VCL
Media.Audio.Play.Win.FMX
Media.Audio.Play.Macos.FMX
Media.Audio.Rec
Media.Audio.Rec.Win.VCL
Media.Audio.Rec.Win.FMX
Media.Audio.Rec.Macos.FMX

das ist aber meist schon überflüssig (z.B. weil Macos i.d.R. nur FMX sein kann ).
Ok, jetzt lassen wir mal CrossVCL, TMS WebCore, FNC, ... aussen vor

Wichtig finde ich bei der Nomenklatur dass das eigentlich Entscheidende, die Funktion, vorne steht:

Media.Audio.Play

Das mag Vielen wie umgekehrt polnische Notation vorkommen, ist aber in der Praxis sehr hilfreich.
(und UPN war der normalen Notation logisch überlegen, auch wenn ich es damals sehr gehasst habe :stupid:).

himitsu 1. Sep 2020 16:17

AW: Projektstruktur (nicht alles in einem Ordner)
 
Projektoptionen > Erzeugen > Delphi-Compiler : Unit-Gültigkeitsnamen

Da in der Mitte des langen Textes versteckt sich standardmäßig ein
Delphi-Quellcode:
;Vcl;
bei neuen VCL-Projekten
und
Delphi-Quellcode:
;Fmx;
bei den geräteübergreifenden Projekten.
(beim Upgreade alter Projektdateien wird das aber nicht automatisch eingefügt, drum heißt es dann gern "Unit Forms nicht gefunden")

Dadurch wird beim Kompilieren, wenn eine Unit
Delphi-Quellcode:
MyUnit
nicht gefunden wird, entsprechend auch nach
Delphi-Quellcode:
Vcl.MyUnit
oder
Delphi-Quellcode:
Fmx.MyUnit
gesucht,
drum kannst du
Delphi-Quellcode:
uses Forms;
schreiben und kompiliert wird mit
Delphi-Quellcode:
Vcl.Forms
, bei einem VCL-Projekt.


Dort kann man auch Eigenes einfügen, für eigene/fremde Bibliotheken.



Für Bibliotheks-Präfix funktioniert das super,
aber von der Sortierung im Verzeichnis und für die Codevervollständigung, wäre es als Platform-Suffix übersichtlicher.

Zitat:

notfalls kann ich dahinter dann noch das Framework schreiben FMX/VCL
Genau, man kann muss es hinschreiben, aber automatisch geht es nicht, jedenfalls nicht hinten.

Rollo62 1. Sep 2020 16:25

AW: Projektstruktur (nicht alles in einem Ordner)
 
@himitsu
Aha, man lernt nie aus.
Ich denke man könnte sich alleine 1 Jahr mit der IDE un deren versteckten Funktionen beschäftigen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:43 Uhr.
Seite 2 von 2     12   

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