Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Überprüfen of Datentyp definiert ist ... (https://www.delphipraxis.net/169453-ueberpruefen-datentyp-definiert-ist.html)

bernhard_LA 20. Jul 2012 14:32

Überprüfen of Datentyp definiert ist ...
 
wir verwenden einen Datentyp z.B.
Delphi-Quellcode:
 type TPoint3D = record x,y,z : Integer end;
Wir haben ein paar hundert Units und ein paar Hände voll mit Anwendungen die diese Units dann wieder verwenden. Ich möchte nicht immer alle Units in ein Projekt einbinden müssen und müsste deshalb wissen ob die Definition des Type TPOINT3D schon erfolgt ist oder nicht

Delphi-Quellcode:
{$IfDef TPOint3D}
  ///   nix zu tun
  {$Else}
 
   type TPoint3D = record x,y,z : Integer end;

  {$EndIf}

Man könnte zu jedem Datentyp ein {$Define T3DPoint } ergänzen, scheint mir keine wirklich gute Lösung zu sein ....

nahpets 20. Jul 2012 14:40

AW: Überprüfen of Datentyp definiert ist ...
 
Hallo,

eine schneller Vorschlag ohne Anspruch auf konkrete Umsetzbarkeit:

Legt alle Typdefinitionen in eine einzige Unit, dann muss nur diese (aber überall) eingebunden werden.

Definekaskaden halte ich für unübersichtlich und fehleranfällig.

Alternativ wäre noch eine Includedatei möglich, die überall eingebunden wird.

bernhard_LA 20. Jul 2012 14:48

AW: Überprüfen of Datentyp definiert ist ...
 
Hintergrund zu der Frage :


ich will nicht jedem Kunden alles geben ... wir haben mehrere units in der viele Datentypen definiert sind ... Für Test Units / Test Anwendungen will ich jetzt nur wenige Datentypen verwenden und weitergeben ...

mjustin 20. Jul 2012 15:12

AW: Überprüfen of Datentyp definiert ist ...
 
Zitat:

Zitat von bernhard_LA (Beitrag 1175391)

müsste deshalb wissen ob die Definition des Type TPOINT3D schon erfolgt ist oder nicht

Delphi-Quellcode:

{$IF Declared(TPOINT3D)}

...

{$IFEND}
Doku: http://docwiki.embarcadero.com/RADSt...e_%28Delphi%29

himitsu 20. Jul 2012 15:19

AW: Überprüfen of Datentyp definiert ist ...
 
Da Typen eindeutig sind, hilft dir das eh nix.

Selbst wenn du TPoint3D neu definierst, weil du keine Lust hattest die richtige Unit einzubinden,
dann kannst du es dennoch vergessen z.B. eine "externe" Prozedur, aus einer anderen Unit, aufzurufen, welche aber mit dem eigentlichen Typen deklariert wurde.



Nur weil Typen gleich aussehn, sind sie dennoch nocht kompatibel.

Delphi-Quellcode:
{$IF not Declared(TPoint3D)}
  type TPoint3D = record x,y,z : Integer end;
{$IFEND} // ich hoff es war nicht {$ENDIF}
Delphi-Quellcode:
{$IF Defined(WIN32)}
entspricht dem
Delphi-Quellcode:
{$IFDEF WIN32}
, nur daß man da mehr Möglichkeiten hat, wie z.B.
Delphi-Quellcode:
{$IF not Defined(WIN32) and not Defined(UNIX)}
.

p80286 20. Jul 2012 15:40

AW: Überprüfen of Datentyp definiert ist ...
 
Zunächst haut Dir doch der Compiler die fehlende Typdefinition um die Ohren, und da kannst Du Dich doch entscheiden was Du machen willst, die "Original"-Unit einbinden oder nahpets Lösung mit den Units/Include-Dateien nutzen.

(wobei, wenn es ordentlich definierte Module/Objekte gibt, sollte das Problem doch eigentlich garnicht auftreten?)
Gruß
K-H

Furtbichler 21. Jul 2012 05:43

AW: Überprüfen of Datentyp definiert ist ...
 
Zitat:

Zitat von p80286 (Beitrag 1175405)
(wobei, wenn es ordentlich definierte Module/Objekte gibt, sollte das Problem doch eigentlich garnicht auftreten?)

Wieso schreibst Du die entscheidende Frage so klein?

Fatal, wer Units à la 'AlleMeineDatentypenAufEinemHaufen.PAS' hat.

Der Lösungsansatz 'Ich deklarier mir das eben lokal neu' entfaltet seine Eigenheiten spätestens dann, wenn man den Datentypen TPoint3D mal erweitert oder verändert. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 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