Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#24

AW: Delphi, sehr umfangreiche Projekt-Ordner-Struktur, wie Dateien finden

  Alt 14. Feb 2019, 11:41
Also, ich hab mir vor kurzem angewöhnt, den Bibliothekspfad und den Suchpfad auf ein Minimum zu reduzieren.

Grund: Das Kompilieren dauerte idiotisch lange.

Mit dem FileMon von SysInternals hab' ich mal mitloggen lassen, was da so alles auf der Festplatte passiert.

Delphi sucht jede mit Uses irgendwo eingebundene Datei in allen Pfaden, die in Bibliotheks- und Suchpfad stehen, bis sie gefunden wurde. Zuerst wird überall nach der .pas gesucht, wenn die nicht gefunden wird, nochmal das Ganze mit der .dcu. Erst wenn das erfolglos ist, wird 'ne Fehlermeldung ausgegeben. Da kommen dann schnell etliche tausend erfolglose Dateizugriffe zustande.

Das Ergebnis des FileMon speichere ich mir dann in eine Datei und mit 'nem Pascal-Script für meinen Editor, werte ich diese Datei aus. Man kann gut die erfolgreichen Zugriffe des Compilers von den Fehlern untershcheiden. Für die erfolgreichen Zugriffe schreib' ich mir eine Zeile für die DPR. Die wird entsprechend ergänzt und enthält dann alles, was "irgendwo" gefunden wurde.

Was nicht gefunden wurde, wird mit 'ner rekursiven Dateisuche durch das Script "aufgestöbert" und kommt dann ebenfalls in die DPR. Das Script durchsucht nur von mir vorgegeben Verzeichnisse, so dass Bibliotheken und Fremdkomponenten nicht gefunden werden.

Sollte dann beim Kompilieren noch Sachen nicht gefunden werden, wird dafür entweder der Such- oder der Bibliothekspfad ergänzt oder die Datei ins Projekt aufgenommen, also die DPR ergänzt.

Die DPR kann schonmal recht groß werden, da sie aber für die gewöhnliche Programmierung eh kaum benötigt wird (wann braucht man dort schon irgendeine Programmlogik), ist das für die Entwicklung eigentlich eher egal.

Vorteil: Das Kompilieren wird deutlich schneller, bei sehr großen Projekten kann die Beschleunigung im Minutenbereich liegen, jedenfalls dann, wenn man mal ein Projekt neu erstellen lässt.
  Mit Zitat antworten Zitat