| Autor |
Beitrag |
Stoney
      
Beiträge: 122
Mac OS X 10.6 "Snow Leopard", Ubuntu Linux 9.04, Mandriva 2010, Win 7, Win Vista, Win XP
Object Pascal (Turbo Delphi, FPC 2.2.4, Lazarus), C++ (Code::Blocks, XCode), Java (Eclipse)
|
Verfasst: Di 14.03.06 21:32
Ich arbeite momentan an einem größeren OpenSource-Projekt (einer 2D-"Engine") und möchte vor dem nächsten großen Release die Units etwas ordnen. Bisher hatte ich alle Klassen und Prozeduren/Funktionen in einer Unit zusammengeschustert. Wenn die Unit aber etwas größer wird (wie in diesem Fall), dann geht einiges an Übersichtlichkeit verloren. Also hat mir ein Mitprogrammierer geraten, die Unit in mehrere kleine Units aufzuteilen.
Damit es etwas geordneter ist, wollte ich die kleineren Units in einen Unterordner stecken, während die Hauptunit im Haupt-Verzeichnis (das Verzeichnis ist im Bibliothekspfad von Delphi) liegt.
Also hatte ich überlegt, die Sub-Units folgendermaßen einzubinden:
Quelltext 1: 2: 3: 4:
| uses Subunit1 in 'Ordner/subunit1.pas', Subunit2 in 'Ordner/subunit2.pas', Subunit3 in 'Ordner/subunit3.pas', ... etc. |
Leider funktionniert das nicht so wie ich dachte. Als Fehler wird angezeigt, dass die DCU nicht gefunden wird. Klingt für mich etwas komisch, reicht es nicht aus, wenn die PAS da ist?
Was habe ich falsch gemacht? Gibt es eine Möglichkeit, ohne den Ordner als Bibliothekspfad in Delphi einzutragen?
Übrigens hat es keine Wirkung, ob es jetzt ein / oder ein \ ist.
|
|
Born-to-Frag
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: Di 14.03.06 21:34
Nein, die dcu muss natürlich auch da sein. Also so wie es jetzt ist, müssten deine Subunits in DeinProjektOrdner\Ordner\ liegen... die dcus der unit werden aber ja miterstellt..
greetz
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
Stoney 
      
Beiträge: 122
Mac OS X 10.6 "Snow Leopard", Ubuntu Linux 9.04, Mandriva 2010, Win 7, Win Vista, Win XP
Object Pascal (Turbo Delphi, FPC 2.2.4, Lazarus), C++ (Code::Blocks, XCode), Java (Eclipse)
|
Verfasst: Di 14.03.06 21:43
Born-to-Frag hat folgendes geschrieben: | | Nein, die dcu muss natürlich auch da sein. |
Aber wie ist es jetzt zum Beispiel bei Freepascal und Lazarus, dort gibt es schließlich keine DCUs?
| Zitat: | Also so wie es jetzt ist, müssten deine Subunits in DeinProjektOrdner\Ordner\ liegen... die dcus der unit werden aber ja miterstellt..
|
Da hast du vollkommen recht, wenn es sich um eine VCL-Anwendung handeln würde. Bei meinem Projekt handelt es sich aber um eine plattforumunabhängige Unitsammlung.
|
|
JayK
      
Beiträge: 1013
|
Verfasst: Di 14.03.06 22:11
Freepascal macht ppu und o drauß, Delphi dcu.
Ich kann grundlegend erstmal keinen Fehler in der Deklaration feststellen.
uses unit in 'subordner\unit.pas' meiner Meinung nach richtig
Aber bei mir funktioniert das auch manchmal nicht, später wieder doch, so richtig durchschaut hab auch ich es noch nicht
Sind die Units (pas oder dcu, is egal) wirklich in dem Unterordner? Tippfehler ausschließen.
Wenn du ein VCL-Projekt anfängst, kannst ja in die .dpr Datei gucken, da sind die Form-Units ja mit diesem in 'Pfad' eingebunden.
Ansonsten lass das "in sowieso" weg und packe für das Projekt in die Projektoptionen einen extra Suchpfad rein. Projektoptionen -> Verzeichnisse und Bedingungen oder so.
Achnee, wenn du ne Engine machst, dann hat ja jeder sein eigenes anderes Projekt...
Kannst ja als Bedingung für die benutzenden Programmierer hinschreiben (install.htm, readme.htm), dass sie ihre Suchpfade um diesen Ordner ergänzen sollen.
|
|
Stoney 
      
Beiträge: 122
Mac OS X 10.6 "Snow Leopard", Ubuntu Linux 9.04, Mandriva 2010, Win 7, Win Vista, Win XP
Object Pascal (Turbo Delphi, FPC 2.2.4, Lazarus), C++ (Code::Blocks, XCode), Java (Eclipse)
|
Verfasst: Mi 15.03.06 23:15
Ich bin jetzt zu des Rätsels Lösung gekommen: Das uses ... in ... ist zwar korrekt deklariert, funktionniert allerdings nur bei DPR.
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 07.08.08 19:04
Warum ist das so ? Ich habe schon häufiger versucht, Units in Unterordner zu packen und einzubinden. (Meistens Fremdunit-Sammlungen)
Wie stelle ich das an ?
€: Einfach die Units in der dpr hinzufügen, dann können sie überall über die uses Klausel eingebunden werden.
mfg
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Do 07.08.08 20:29
Units lassen sich auch bequem via Projekt Manager einbinden. Strg+Alt+F11 -> Rechtsklick -> Add.
cu
Marc.
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 08.08.08 00:17
Genau das meinte ich 
|
|
|