Wozu sollte man sie dann überhaupt noch alle in die anderen Projektdateien einbinden?
Man muß ja nur noch die entsprechenden Units (nicht immer alle) dort einbinden, wo sie benutzt werden
und das muß man sowieso machen.
Ich will ja nicht alle verwendeten Units einbinden - die ganzen Delphi-Standard-Units z.B. machen im Projekt ja echt keinen Sinn und Files die im Suchpfad sind kann man auch weglassen. Aber ich erklär's gern noch mal:
Wie eingangs erwähnt haben wir Funktionsblöcke die jeweils aus vielen zusammenhängenden Units bestehen.
Ich möchte nur in einer Anwendung die Funktion "GanzKomplizierteBerechung" aufrufen und füge die
Unit "gkb.pas" zu uses-list.
Weil gkb.pas nicht in einem Standard-Suchpfad liegt muss ich sie zum Projekt hinzufügen. Und danach alle 50 Units die von "gkb.pas" verwendet werden, die auch nicht im Suchpfad sind. Ich muss mir also die Files endlos zusammensuchen. Das ist viel Arbeit und bläht das Projektfile ordentlich auf (sprich: macht es unübersichtlich).
Sollte ich die GanzKomplizierteBerechung plötzlich da doch nicht drin brauchen, wird's mir nicht ohne weiteres gelingen, die unnötigen Units wieder aus dem Projekt zu entfernen - was natürlich im allgemeinen keine Tragik ist (lediglich ein unnötig unübersichtliches .dpr und u.U. ein aufgeblasenes Exe). Trotzdem wär's fein da einen entsprechenden Mechanismus zu haben - den Delphi aber scheinbar nicht bietet.
Nur eine kleine Anmerkung zu "muss ich doch sowieso dort einbinden wo sie benutzt werden": Das stimmt so natürlich nicht. Eine
Unit kann der Hauptanwendung auch Funktionalität beisteuern wenn sie nirgends explizit im uses steht. Ganz allein dadurch, dass sie dem Projekt hinzugefügt wird. Ein einfaches Beispiel hierfür sind z.B. die TPicture.RegisterFileFormat-aufrufe in den diversen PngImage.pas, SvgImage.pas etc. Wir verwenden auch so einen Mechanismus für ein Plugin-System. Und da ist's ganz fein wenn man zum debuggen mal ganz schnell alle klobigen Plugins aus dem Projekt werfen kann und nur die drinnen lässt, die zur Fehlersuche nötig sind. Oder einfach eine abgespeckte Version einer Applikation für einen speziellen Kunden erstellen.
Zu guter letzt: Sollt' es so ein System jemals geben wäre es natürlich wünschenswert, dass "duplicate file" Konflikte automatisch aufgelöst werden. Wenn Paket 1 die Units a,b,c,d enthält und Paket 2 die Units d,e,f,g dann sollte Delphi damit leben können wenn ich Paket 1 UND 2 einbinde, auch wenn
Unit 2 doppelt genannt wird.
Die Funktion fehlt offensichtlich in Delphi. Vielleicht findet sie ja mal rein, schwierig wär's ja nicht und für sehr grosse Projekte allemal praktisch.