Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Lazarus vs: Delphi xe namespaces (https://www.delphipraxis.net/170613-lazarus-vs-delphi-xe-namespaces.html)

bernhard_LA 25. Sep 2012 20:43

Lazarus vs: Delphi xe namespaces
 
ich denke Lazarus 1.0 kann aktuell keine Delphi XE Projekte einlesen wegen den in dieser Delphiversion eingeführten Unit namespaces.

Was wäre denn der beste Ansatz um Projekte sowohl unter Lazarus als auch unter D XE, XE2 ..... läuffähig zu bekommen??

himitsu 25. Sep 2012 21:04

AW: Lazarus vs: Delphi xe namespaces
 
Man muß keine Namespaces in XE2+ verwenden.

Ansonsten mach es wie alle Anderen auch und leg ein IFDEF um die Uses drumrum.

mkinzler 26. Sep 2012 06:48

AW: Lazarus vs: Delphi xe namespaces
 
Beim Einfügen von Komponenten werden die benötigten Units aber automatisch mit Namespaces eingefügt.

JamesTKirk 26. Sep 2012 08:20

AW: Lazarus vs: Delphi xe namespaces
 
Als kleine Erläuterung noch:

Lazarus 1.0 (also die IDE an sich) unterstützt Namespaces.

Beim darunterliegenden Free Pascal Compiler schaut es unterschiedlich aus:

Free Pascal 2.6.0 (welcher bei Lazarus 1.0 dabei ist) unterstützt keine Namespaces.

Free Pascal 2.7.1 (die Entwicklungsversion, welche auch von Lazarus unterstützt wird) bietet Unterstützung für Namespaces.
Aber: Die Units der RTL, LCL und so weiter sind noch nicht auf Dotted Unit Names umgestellt und mir ist auch kein Plan bekannt dies zu tun. Außerdem unterstützt FPC das "Standardnamespace" Feature von XE 2 noch nicht, wobei mir hier auch noch kein Plan bekannt ist dies zu ändern.

Noch zur Frage an sich:
Meiner Einschätzung nach dürfte eine gleichzeitige Unterstützung für (GUI) Code von Lazarus/FPC und Delphi 2009+ (oder auch nur Delphi XE 2+) recht schwierig und wenn überhaupt sehr IFDEF-lastig werden, da einerseits die Dotted Unit Names Problematik existiert und andererseits ja auch die String Typen unterschiedlich sind (Delphi verwendet UnicodeString, während FPC noch AnsiString verwendet und noch dazu Lazarus in den AnsiString UTF-8 reinschreibt).

Gruß,
Sven

himitsu 26. Sep 2012 10:14

AW: Lazarus vs: Delphi xe namespaces
 
Bei Delphi muß man auch noch aufpassen, also mit den NameSpases.

Da gibt es
Delphi-Quellcode:
SysUtils
, welches über die Projektoptionen automatisch einen passenden Namespace verpasst bekommen könnten.
Dann natürlich direkt
Delphi-Quellcode:
System.SysUtils
, aber es gibt auch noch
Delphi-Quellcode:
System_SysUtils
, welches aber was ganz Anderes ist. (k.A. wer sich das ausgedacht hat)

Die Units mit
Delphi-Quellcode:
Namespace + Punkt + Unitname
sind zu bevorzugen und nutzen den string (UnicodeString),
aber die Units mit
Delphi-Quellcode:
Namespace + Unterstrich + Unitname
nutzen stattdessen den WideString und sind daher untereinander nicht unbedingt kompatibel.
Vorallem sollte man da wohl aufpassen, daß man keine doppelten "globalen" Variablen reinbekommt, da diese beiden Varianten unabhängig voneinander sind.

Stevie 26. Sep 2012 11:04

AW: Lazarus vs: Delphi xe namespaces
 
Zitat:

Zitat von himitsu (Beitrag 1184514)
aber es gibt auch noch
Delphi-Quellcode:
System_SysUtils
, welches aber was ganz Anderes ist. (k.A. wer sich das ausgedacht hat)

Die Units sind nur in XE2 für iOS wegen dem damaligen FPC Stand (keine Punkte im Unitnamen).

Da jeder Entwickler, der mit XE2 und höher arbeitet und Units/Forms erstellt/bearbeitet, die auch abwärtskompatibel sein sollen, automatisch die scoped Unitnamen in die Units bringt, habe ich mal bei mir in die GExperts im Uses Clause Manager eine Aktion eingebaut, mit der man den Unitscope entfernen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.

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