Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Globale Unit einbinden (https://www.delphipraxis.net/207577-globale-unit-einbinden.html)

Delbor 10. Apr 2021 12:35

Delphi-Version: 10.4 Sydney

Globale Unit einbinden
 
Hi zusammen

Ich habe eine GenericObjectListUnit, die mir eine entsprechende Klasse deklariert. Das Verzeichnis dieser Datei ist im Suchpfad unter <Tools/Optonen/Delphi Bibliotek eingetragen. Die Idee dahinter: die Klasse verwenden zu können, ohne sie für jedes Projekt neu zu deklarieren.

Ich ging nun mal davon aus, dass ich sie nur im Usesteil angeben müsste - aber zu früh gefreut. Erst als ich die externe Datei ins Projekt aufnahm, konnte ich die Klasse verwenden. Was ging da schief?

All die Units aus dem Usesteil sind ja auch nicht Teil meines Projektes - Delphi bindet davon nur die benötigten Teile ein.

Es sei denn, Delphi wurde in den letzten Jahren komplett umgeschrieben...

Gruss
Delbor

Delphi.Narium 10. Apr 2021 13:05

AW: Globale Unit einbinden
 
Hab' ich bei Delphi 7 auch schon häufiger gehabt.

Lag bisher immer an fehlerhaften bzw. unvollständigen Einträgen im Suchpfad, derweil: Dort gehören die Quelltexte rein.

Bibliothek

Dort steht:
Zitat:

Zitat von Bibliothekspfad
Gibt die Suchpfade für die erforderlichen Dateien für das Package, z.B. .dcp- und .bpi-Dateien, an.

Dies ist der globale Delphi-Bibliothekspfad. Der Compiler berücksichtigt nur die Dateien, die in dem Bibliothekspfad vorhanden sind. Wenn Sie ein Package mit einer Datei erzeugen möchten, die sich nicht im Bibliothekspfad befindet, wird ein Compiler-Fehler ausgegeben.

Einige Ressourcendateien (wie controls.res) sind nur im Ordner Release verfügbar (nicht im Ordner Debug), daher müssen Sie sicherstellen, dass Ihr Projekt-Release-Verzeichnis entweder im Bibliothekspfad angegeben ist oder sich zumindest aus einer Variable im Bibliothekspfad ergibt.


jaenicke 10. Apr 2021 13:08

AW: Globale Unit einbinden
 
Hast du das Verzeichnis in den Suchpfad (für den Debugger zur Anzeige der Quelltexte) oder in den Bibliothekspfad (für den Compiler zum Suchen der einzubindenden Units) eingetragen? Nur in letzterem würde es etwas bringen.

Delbor 10. Apr 2021 13:23

AW: Globale Unit einbinden
 
Hi zusammen

Zitat:

Zitat von jaenicke (Beitrag 1486847)
Hast du das Verzeichnis in den Suchpfad (für den Debugger zur Anzeige der Quelltexte) oder in den Bibliothekspfad (für den Compiler zum Suchen der einzubindenden Units) eingetragen? Nur in letzterem würde es etwas bringen.

Im Bibliothekspfad habe ichabsichtlich nichts eingetragen, weil die Help / das Wiki von bpl und dergleichen spricht. Wobei - auch ein Pfad ist erstmal ein String, und die Dinger verbrauchen im Vergleich zur Gesamtleistung eh 'keinen' Speicher mehr.

Gruss
Delbor

KodeZwerg 10. Apr 2021 17:35

AW: Globale Unit einbinden
 
konnte man nicht auch über
Delphi-Quellcode:
{§INCLUDE datei.inc}
units nachladen oder war das das in includes objekte aus fremd units public gemacht werden konnte... an irgendwie sowas glaube ich mich zu erinnern.

jaenicke 10. Apr 2021 20:21

AW: Globale Unit einbinden
 
Zitat:

Zitat von Delbor (Beitrag 1486848)
Im Bibliothekspfad habe ichabsichtlich nichts eingetragen, weil die Help / das Wiki von bpl und dergleichen spricht. Wobei - auch ein Pfad ist erstmal ein String, und die Dinger verbrauchen im Vergleich zur Gesamtleistung eh 'keinen' Speicher mehr.

Um Speicherplatz geht es dabei weniger. Die Performance des Compilers nimmt natürlich etwas ab je mehr Pfade zur Suche nach einer Datei durchsucht werden müssen.

Ich habe das für uns so gelöst, dass ein Package diese ganzen allgemeinen Units in ihren diversen Verzeichnissen enthält und einmal erstellt wird. Die ganzen Units werden dann beim Kompilieren in einem .dcu Ausgabeverzeichnis abgelegt, das im Bibliothekspfad liegt. Dadurch muss nur an der einen Stelle zusätzlich gesucht werden.

Im Suchpfad liegen die Quelltextverzeichnisse um beim Debuggen den Quelltext zu sehen.


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