AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig
Thema durchsuchen
Ansicht
Themen-Optionen

PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

Offene Frage von "galex9"
Ein Thema von Der schöne Günther · begonnen am 15. Nov 2016 · letzter Beitrag vom 22. Nov 2016
Antwort Antwort
Seite 1 von 2  1 2      
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

  Alt 15. Nov 2016, 17:41
Es gibt so viele tolle Bibliotheken da draußen. Man "installiert" sie und kann fortan bunte Vierecke auf seine Formulare ziehen. Noch wichtiger: Man hat die Sourcen einmal kompiliert, nun DCUs im Bibliothekspfad liegen und braucht sie nicht jedes mal kompilieren.

Alles gut soweit.

Nun gibt es Leute die haben keine Lust nach jedem RAD Studio-Release auf X Geräten Komponenten zu ziehen und zu installieren. Ich möchte die Quelltexte der Libraries nun an die Projekte selbst mit dranhängen.

Das klappt auch: Man legt die Bibliothek z.B. als Sub-Repository des Projekts an, stellt in den Projekt-Optionen noch als Suchpfad z.B.
Code:
.\..\libs\Graphics32
und fertig. Man muss halt jetzt darauf verzichten im Formular-Designer die Dinge aufs Formular zu ziehen aber das stört nicht. Weiterer Bonus: Verschiedene Projekte können mit verschiedenen Versionen von Libraries arbeiten und man kann sie sehr einfach auswechseln (Subrepo updaten)

Das Problem: Ich gehöre zu den Leuten die nichts gegen Komponenten-Installationen haben. Ich möchte nicht jedes mal die Sourcen neu kompilieren, denn die DCUs habe ich ja in meinem Bibliothekspfad liegen. Was kann ich tun?

Folgende Ideen hatte ich bislang:
  • Subrepo für mich lokal auf "leer" stellen: Somit werden im Suchpfad keine PAS-Dateien gefunden und er nimmt die DCUs aus dem Bibliothekspfad
  • Neben Debug und Release eine weitere Gruppe "Debug_NoLocalLibraries" oder so ähnlich, diese hat den Suchpfad dann nicht

Geändert von Der schöne Günther (15. Nov 2016 um 17:44 Uhr)
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

  Alt 15. Nov 2016, 19:47
hmm...oder beim Installieren der Componenten den DCU-Pfad auf ein Zentrales Verzeichnis biegen.
(Das ergibt zwar ein "Sumpf" Verzeichnis, aber gut).

Dann nur im Bib-Pfad das Sumpfverzeichnis rein und wie bei Subrepo vorgehen.

Bietet den zusätzlichen Vorteil das auch der Bibleothekspfad entschlackt wird
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

  Alt 15. Nov 2016, 19:59
Das Problem ist dass die Leute hier keine Lust mehr auf Komponenten installieren haben und Projekte möglichst "out of the box" laufen sollen.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

  Alt 15. Nov 2016, 20:25
Das Problem ist dass die Leute hier keine Lust mehr auf Komponenten installieren haben und Projekte möglichst "out of the box" laufen sollen.
Das Komponenten installieren kann man aber auch deutlich vereinfachen. Wenn die compilierten Dateien bereits vorliegen, dann genügt ein Doppelklick auf eine entsprechend gefüllte REG-Datei. Es muss sich halt nur einer einmal die Arbeit machen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rollo62

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

AW: PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

  Alt 19. Nov 2016, 10:40
Ich weiss nicht ob die vorkompilierten DCUs so eine gute Idee sind, schon gar nicht wenn du alte/neue Versionen
benutzen willst.
Da hat sich schnell mal eine alte reingeschlichen, und solche Fehler sind sehr schlecht zu finden,
am ehesten noch durch die verschobenen Debug-Positionen beim testen.
Oder gibt es etwa eine sichere Methode mit der man diese alten Leichen verhindern oder zumindest warnen kann ?

Natürlich fände ich soetwas auch super wenn es solche Leichen beim Linken aussortieren könnte.

Ich würde auf jeden Fall einmal im aktuellen Projekt BuildAll vorziehen, und dann sollte alles einmal
aktualisiert sein.
Von da aus wäre natürlich das Kompilieren bei Bedaf sehr sinnvoll wenn es 100% sicher funktioniert,
aber ehrlich gesagt auch da verlasse ich mich selten drauf.

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

  Alt 20. Nov 2016, 11:20
Ich weiss nicht ob die vorkompilierten DCUs so eine gute Idee sind, schon gar nicht wenn du alte/neue Versionen
benutzen willst.
Da hat sich schnell mal eine alte reingeschlichen, und solche Fehler sind sehr schlecht zu finden,
am ehesten noch durch die verschobenen Debug-Positionen beim testen.
Grunsätzlich bin ich auch auf der "alles aus dem Source compilieren" Seite. Bei den Design-Packages gibt es aber einen durchaus relevanten Aspekt für die globalen DCU-Suchpfade: in der Regel entsprechen die DCUs dann nämlich auch den zur Designzeit verwendeten Komponenten.

Dies ist auch einer der Gründe, weswegen ich meinen Package Magician geschrieben habe. Damit kann man die für ein Projekt benötigten Design-Packages dynamisch mit dem Projekt laden. In dem Fall sind dann die projektbezogenen Suchpfade auf die Bibliotheken wieder sinnvoll.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

  Alt 20. Nov 2016, 15:56
Dadurch dauert aber, insbesondere bei großen Bibliotheken, das Kompilieren relativ lange. Theoretisch sollte man das nur einmal müssen, aber das RAD Studio kommt leider immer durcheinander wenn sich durch das Versionierungstool viel ändert (z.B. Zweig wechseln/Patches runternehmen) sodass man gezwungen ist, einmal auf "Bereinigen" zu drücken.

Ich vorkompilierte DCUs schon sinnvoll dafür.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

  Alt 21. Nov 2016, 10:16
Dadurch dauert aber, insbesondere bei großen Bibliotheken, das Kompilieren relativ lange...
Nun ja, kommt darauf an, was du unter "relativ" verstehst. Mit dem Einsatz entsprechender Hardware lässt sich viel "relativieren". Wenn ich als Beispiel mein größtes Projekt mit ca. 570 eigenen Units und zahlreichen Bibliotheken komplett neu compiliere, und das ca. 10 Sekunden dauert, dann denke ich, ist das Potential das man durch vorkompilierte DCU's noch ausschöpfen kann "relativ" gering. Vielleicht im Bereich von geschätzt 2-3 Sekunden. Da braucht es schon ca. 20 Re-Builds um gerade mal eine Minute einsparen zu können.

Wenn ich aber stattdessen das selbe Projekt auf meinem Notebook compiliere... Ich denke, sich über die Hardware Gedanken zu machen, bringt mehr
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
galex9

Registriert seit: 3. Nov 2006
17 Beiträge
 
#9

AW: PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

  Alt 21. Nov 2016, 10:40
Dies ist auch einer der Gründe, weswegen ich meinen Package Magician geschrieben habe. Damit kann man die für ein Projekt benötigten Design-Packages dynamisch mit dem Projekt laden. In dem Fall sind dann die projektbezogenen Suchpfade auf die Bibliotheken wieder sinnvoll.

Hallo Uwe, kannst du etwas mehr darüber erzählen?

Sonst war bei mir Lazy Delphi Builder im Einsatz
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#10

AW: PAS-Dateien im Suchpfad nicht neu kompilieren wenn nicht nötig

  Alt 21. Nov 2016, 13:47
Hallo Uwe, kannst du etwas mehr darüber erzählen?
Klar! Ich denke, jeder ist schon mal in der Situation gewesen, daß er mit unterschiedlichen Versionen einer Bibliothek arbeiten musste. In dem Fall bieten die verschiedenen Versionsverwaltionssysteme die nötigen Mittel, um die richtigen Versionen der verschiedenen Bibliotheken einzubinden (bei SVN z.B. die Externals). Das Problem dabei ist aber, daß die IDE in der Regel davon unbeeinflusst bleibt und lediglich das Design-Package geladen hat, was als letztes installiert wurde (vermutlich die letzte Version der Bibliothek). Das kann nun dazu führen, daß zur Designzeit die Version der BPL nicht zur Version der Sourcen passt die compiliert werden. Im ungünstigen Fall werden dabei neue Properties in die DFM geschrieben die zur Laufzeit nicht bekannt sind.

Ein weiterer Fall aus der Praxis: Ein bestehendes Projekt verwendet projektspezifische Komponenten aus einem Design-Package zu diesem Projekt, das in der IDE installiert werden muss. Andernfalls werden diese Komponenten auf den Forms nicht gefunden. Nun wird dieses Projekt von der BDE zu FireDAC migriert. Die in den Komponenten verwendeten TQuery-Typen werden dabei durch TFDQuery ersetzt. Die requires-clause des Package wird folglich von BDE- auf FireDAC-Packages umgestellt. Jetzt existieren zwei gleichnamige Packages mit fast identischem Inhalt (eines gegen die BDE compiliert und eines gegen FireDAC), die natürlich nicht gleichzeitig in die IDE installiert werden können. Will ich nun wechselweise die BDE-Version und die FireDAC-Version des Projekts bearbeiten, muss ich jedesmal erst das aktuelle Projekt schließen, das Package deinstallieren, das andere Package installieren und das andere Projekt öffnen.

Hier bietet der Package Magician eine transparente Möglichkeit, Design-Packages projektbezogen zu installieren. Dabei werden diese projektbezogenen Packages mit dem Öffnen des Projekts in der IDE installiert und beim Schließen des Projekts wieder deinstalliert. Man kann nun einfach wieder die Projekte umschalten und hat automatisch immer das passende Design-Package geladen.

Man kann mit dem Package Magician auch die Komponenten-Inflation etwas eindämmen. Die Komponentensammler unter uns kennen die überquellenden Komponentenpalette und die überlangen Ergebnislisten, wenn man z.B. bei F6 "label" eingibt. In den jeweiligen Projekten werden aber in der Regel nur ein Teil dieser Bibliotheken wirklich verwendet. Mit dem Package Magician kann man nun alle diese Design-Packages aus der IDE entfernen und nur bei den Projekten laden, in denen sie tatsächlich gebraucht werden (dann auch in der passenden Version - siehe oben).


Sonst war bei mir Lazy Delphi Builder im Einsatz
Ich kenne das Tool nicht und kann auch so auf den ersten Blick nicht erkennen, ob es bei den oben beschriebenen Szenarien eine Hilfe ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:47 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