Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Suchpfadauflösung für {$INCLUDE files (https://www.delphipraxis.net/201731-suchpfadaufloesung-fuer-%7B%24include-files.html)

Rollo62 21. Aug 2019 09:50

Suchpfadauflösung für {$INCLUDE files
 
Hallo zusammen,

ich versuche eine include Datei (project.inc) von verschiedenen Pfaden zu Laden.
Die Verzeichnisse sind in etwa so:
Project\Src\Project.inc
Library\Src\Project.inc

Der Library Suchpfad gibt "Library\Src\" an, und ich gehe davon aus das der Compiler
erstmal lokal sucht, und danach die Suchpfade der Reihe nach abarbeitet.

Es scheint aber immer das Project.inc in "Library\Src\" genommen zu werden,
egal ob ein Project.inc in "Project\Src\" existiert oder nicht.

Was ich erreichen möchte ist das die Project.inc entweder vom Projekt genommen wird (wenn es da existiert),
ansonsten das die Default - Project.inc aus der Library genommen wird.

Das scheint bei Delphi nicht immer verlässlich zu funktionieren, oder gibt es für sowas eine
sichere, zuverlässige Lösung oder einen guten Tipp ?

peterbelow 21. Aug 2019 10:12

AW: Suchpfadauflösung für {$INCLUDE files
 
Zitat:

Zitat von Rollo62 (Beitrag 1442410)
Hallo zusammen,

ich versuche eine include Datei (project.inc) von verschiedenen Pfaden zu Laden.
Die Verzeichnisse sind in etwa so:
Project\Src\Project.inc
Library\Src\Project.inc

Der Library Suchpfad gibt "Library\Src\" an, und ich gehe davon aus das der Compiler
erstmal lokal sucht, und danach die Suchpfade der Reihe nach abarbeitet.

Es scheint aber immer das Project.inc in "Library\Src\" genommen zu werden,
egal ob ein Project.inc in "Project\Src\" existiert oder nicht.

Was ich erreichen möchte ist das die Project.inc entweder vom Projekt genommen wird (wenn es da existiert),
ansonsten das die Default - Project.inc aus der Library genommen wird.

Das scheint bei Delphi nicht immer verlässlich zu funktionieren, oder gibt es für sowas eine
sichere, zuverlässige Lösung oder einen guten Tipp ?

Ich hab da zwar nie eine offizielle Dokumentation für die Suchstrategie gesehen, aber nach meinen Erfahrungen scheint das so zu funktionieren:
  1. Verzeichnis des Projektes (wo das dproj-File liegt)
  2. Verzeichnisse im Search Path in den Project Options
  3. Verzeichnisse im IDE Library path

Du solltest also .\src im search path in den Project options (all configurations branch) haben und library\src im Library path des Tools->Options Dialogs

Rollo62 21. Aug 2019 10:16

AW: Suchpfadauflösung für {$INCLUDE files
 
Zitat:

1. Verzeichnis des Projektes (wo das dproj-File liegt)
2. Verzeichnisse im Search Path in den Project Options
3. Verzeichnisse im IDE Library path
Hallo Peter,

danke für die Antwort.
Genau das wäre meine Erwartung, aber es scheint leider nicht immer so zu suchen.
Ich hatte hier den Fall das 2. vor 1. gesucht wird.

Ich habe jetzt noch nicht explizit den .dproj - Pfad (./) im Search-Verzeichnis mit als erstes angegeben,
das könnte helfen, möchte ich aber eigentlich Vermeiden.

Stevie 21. Aug 2019 10:17

AW: Suchpfadauflösung für {$INCLUDE files
 
Guckst du in die Dokumentation ("das Modul" bezeichnet hier die unit, in der du einbindest)

Es wird immer zuerst neben der unit geschaut in der du includest, danach im dpr Verzeichnis und dann in den search paths.

Rollo62 21. Aug 2019 10:25

AW: Suchpfadauflösung für {$INCLUDE files
 
Zitat:

Zitat von Stevie (Beitrag 1442420)
Guckst du in die Dokumentation ("das Modul" bezeichnet hier die unit, in der du einbindest)

Es wird immer zuerst neben der unit geschaut in der du includest, danach im dpr Verzeichnis und dann in den search paths.

Hallo Stevie,

danke für den Link, hatte nach sowas gesucht, den aber nicht gefunden.
Das macht Sinn für das Verhalten, und erklärt es, aber gibt es einen Workaround dafür ?

Zitat:

Wenn der Dateiname ohne Verzeichnispfad angegeben wird, sucht Delphi die Datei zunächst in dem Verzeichnis, in dem sich das Modul befindet und dann in allen Verzeichnissen, die im Eingabefeld Suchpfad auf der Registerkarte Delphi-Compiler im Dialogfeld Projekt>Optionen (oder mit der Option -I in der dccil-Befehlszeile) angegeben wurden.
Was passiert wenn ich dann einen relativen Verzeichnispfad angebe, z.B. ".\Project.inc",
wird es dann sicher im Projektverzeichnis ZUERST gesucht ?

In der Doku würde ich das eher so verstehen
Zitat:

--> NICHT BEI INCLUDE --> 1. Verzeichnis des Projektes (wo das dproj-File liegt)
2. Verzeichnisse im Search Path in den Project Options
3. Verzeichnisse im IDE Library path

Stevie 21. Aug 2019 10:38

AW: Suchpfadauflösung für {$INCLUDE files
 
Zitat:

Zitat von Rollo62 (Beitrag 1442423)
Was passiert wenn ich dann einen relativen Verzeichnispfad angebe, z.B. ".\Project.inc",
wird es dann sicher im Projektverzeichnis ZUERST gesucht ?

Da dieser relative Pfad auf dasselbe Verzeichnis wie die Unit verweist: nein


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