AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Suchpfadauflösung für {$INCLUDE files
Thema durchsuchen
Ansicht
Themen-Optionen

Suchpfadauflösung für {$INCLUDE files

Ein Thema von Rollo62 · begonnen am 21. Aug 2019 · letzter Beitrag vom 21. Aug 2019
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
3.898 Beiträge
 
Delphi 12 Athens
 
#1

Suchpfadauflösung für {$INCLUDE files

  Alt 21. Aug 2019, 09:50
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 ?
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 21. Aug 2019, 10:12
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
Peter Below
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.898 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 21. Aug 2019, 10:16
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.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

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

  Alt 21. Aug 2019, 10:17
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.898 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 21. Aug 2019, 10:25
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

Geändert von Rollo62 (21. Aug 2019 um 10:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

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

  Alt 21. Aug 2019, 10:38
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
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 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