Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Compiler findet Unit nicht (https://www.delphipraxis.net/153581-compiler-findet-unit-nicht.html)

FriendOfDelphi 9. Aug 2010 13:51

Delphi-Version: 2005

Compiler findet Unit nicht
 
Hallo Allerseits!
Folgendes Problem:

Ich möchte eine eigene Unit in mein Programm einbinden.
Macht man ja normalerweise über USES entweder im Interface- oder Implementation-Teil.
Die Unit, bzw. die DCU-Datei befindet sich im selben Verzeichnis wie das Programm, welches diese einbnden soll.

Der Compiler meldet aber: "Datei nicht gefunden: 'Unitname.dcu'".
Was mache ich falsch?

mkinzler 9. Aug 2010 13:53

AW: Compiler findet Unit nicht
 
Steht das Verzeichnis im Suchpfad? Passt di dcu zur Delphiversion?

DeddyH 9. Aug 2010 13:54

AW: Compiler findet Unit nicht
 
Falls Du diese Unit öfter brauchst, kannst Du sie in ein Verzeichnis im Delphi-Suchpfad verschieben. Ansonsten füge sie einmal Deinem Projekt hinzu (leider weiß ich nicht mehr, wie das unter Delphi 5 genau ging).

hans ditter 9. Aug 2010 14:04

AW: Compiler findet Unit nicht
 
Hmm... Delphi 5 kenn ich nicht, hab selber nur TurboDelphi. Da klickst du auf Projekt im MainMenu und dann auf 'Dem Projekt hinzufügen...'. Da musst dann halt deine Datei suchen.
Hoffe mal, dass das bei Delphi 5 nicht viel anders ist.

LG, hans ditter

FriendOfDelphi 9. Aug 2010 14:18

AW: Compiler findet Unit nicht
 
Zitat:

Zitat von hans ditter (Beitrag 1040513)
Hmm... Delphi 5 kenn ich nicht, hab selber nur TurboDelphi. Da klickst du auf Projekt im MainMenu und dann auf 'Dem Projekt hinzufügen...'. Da musst dann halt deine Datei suchen.
Hoffe mal, dass das bei Delphi 5 nicht viel anders ist.

LG, hans ditter

Funktioniert unter Delphi 5 so:
"Projekt\Dem Projekt hinzufügen...\Name der Datei".

Das macht man doch aber nur, wenn man die Unit auch debuggen will. Deshalb kann man an dieser Stelle nur ".pas"-Dateien zufügen.
Wenn man die Unit nur nutzen will, dann braucht man nur die "*.dcu".
Und die kann man darüber nicht einbinden.

FriendOfDelphi 9. Aug 2010 14:20

AW: Compiler findet Unit nicht
 
Zitat:

Zitat von mkinzler (Beitrag 1040500)
Steht das Verzeichnis im Suchpfad? Passt di dcu zur Delphiversion?

Muss die Unit auch in den Suchpfad, wenn sie im selben Verzeichnis wie das Programm steht?

Die Unit habe ich selbst mit der verwendeten Delphi-Version erstellt.

FriendOfDelphi 9. Aug 2010 14:22

AW: Compiler findet Unit nicht
 
Zitat:

Zitat von DeddyH (Beitrag 1040502)
Falls Du diese Unit öfter brauchst, kannst Du sie in ein Verzeichnis im Delphi-Suchpfad verschieben.

Das weiß ich noch nicht.
Im Moment benötige ich sie erst einmal nur für ein Programm.
Zitat:

Zitat von DeddyH (Beitrag 1040502)
Ansonsten füge sie einmal Deinem Projekt hinzu (leider weiß ich nicht mehr, wie das unter Delphi 5 genau ging).

Siehe Antwort an hans ditter.

himitsu 9. Aug 2010 14:25

AW: Compiler findet Unit nicht
 
Zitat:

Zitat von FriendOfDelphi (Beitrag 1040497)
eine eigene Unit ... einbinden
Die Unit, bzw. die DCU-Datei befindet sich im selben Verzeichnis ...

- wenn du die .pas hast, dann lösch mal die .dcu
- den Namen hast du auch richtig geschrieben?
- ist die DCU eigentlich mit der selben Delphi-Version erstellt/kompiliert worden?

mleyen 9. Aug 2010 14:27

AW: Compiler findet Unit nicht
 
Zitat:

Zitat von FriendOfDelphi (Beitrag 1040520)
Muss die Unit auch in den Suchpfad, wenn sie im selben Verzeichnis wie das Programm steht?

Eigentlich nicht. Was heißt denn im Programm-Verzeichnis? Die *.dcu muss im selben Verzeichnis wie die .dpr liegen.

btw: trippleposts sind nicht gern gesehn, dazu gibts den edit-Button.

FriendOfDelphi 9. Aug 2010 16:24

AW: Compiler findet Unit nicht
 
Zitat:

Zitat von mleyen (Beitrag 1040526)
Zitat:

Zitat von FriendOfDelphi (Beitrag 1040520)
Muss die Unit auch in den Suchpfad, wenn sie im selben Verzeichnis wie das Programm steht?

Eigentlich nicht. Was heißt denn im Programm-Verzeichnis? Die *.dcu muss im selben Verzeichnis wie die .dpr liegen

Das sehe ich genauso und es hat bisher auch so funktioniert.

FriendOfDelphi 9. Aug 2010 16:36

AW: Compiler findet Unit nicht
 
Zitat:

Zitat von himitsu (Beitrag 1040525)
Zitat:

Zitat von FriendOfDelphi (Beitrag 1040497)
eine eigene Unit ... einbinden
Die Unit, bzw. die DCU-Datei befindet sich im selben Verzeichnis ...

- wenn du die .pas hast, dann lösch mal die .dcu
- den Namen hast du auch richtig geschrieben?
- ist die DCU eigentlich mit der selben Delphi-Version erstellt/kompiliert worden?

Also, ich habe folgendes gemacht:
a) die *.dcu meiner Datei gelöscht und die *.pas-Datei dem Projekt hinzugefügt
-> Danach meckert der Compiler nicht mehr darüber, dass er die bisher betroffene Datei nicht findet.
Ist ja auch logisch, da er die *.pas-Datei der Unit jetzt zur Verfügung hat.
Das Problem ist aber nur verschoben:
In dieser Unit werden Units eingebunden, deren *.pas-Dateien ich nicht habe.
Mir stehen lediglich die *.dcu-Dateien zur Verfügung.
Und das hat bei der Erstellung meiner Unit, die ich ursprünglich einbinden wollte, problemlos funktioniert.

Zur Verdeutlichung:
Programm -> Unit A -> Unit B, Unit C

b) Bevor ich Euch hier mit meinen Problemen nerve, habe ich mehrmals verglichen, ob der Unitname richtig geschrieben ist.

c) Die selbst geschriebene Unit ist mit der selben Delphi-Version erstellt/kompiliert worden.

DeddyH 9. Aug 2010 16:47

AW: Compiler findet Unit nicht
 
Dann pack die *.dcu mal mit ins Projektverzeichnis, das sollte klappen.

himitsu 9. Aug 2010 16:59

AW: Compiler findet Unit nicht
 
ob nun .dcu oder .pas ist egal (wenn diese Dateien im selben Verzeichnis liegen, wie die .dpr/.pas, wo sie in der Usesklausel (ohne "in Filename") auftauchen
oder wenn sie in einem der Such-Verzeichnisse liegen, dann nimmt Delphi diese.

Wenn die DCU älter ist, als die PAS (falls Beides gefunden wird), dann wird die DCU neu kompiliert, ansonsten wird die DCU verwendet (es sei denn man sagt, daß alles neu kompiliert werden soll).


ABER: Delphi findet keine DCUs, welche nicht mit der selben Compilerversion erstellt wurden (es sei denn, die PAS liegt bei, dann wird ja neu kompiliert) und selbst wenn Delphi soeine Datei findet, dann ignoriert es diese.

FriendOfDelphi 12. Aug 2010 11:15

AW: Compiler findet Unit nicht
 
Hallo Allerseits!

Ich habe die Lösung des eigentlichen Problems zwar nicht gefunden, aber ich kann beschreiben, wie es funktioniert.

1.) Zunächst einmal werden alle benötigten *.dcu-Dateien (die eigene und die fremden) in das Programmverzeichnis kopiert.
2.) Dann wird ein neues Programm mit der IDE erstellt und mit "Datei\Speichern unter..." in diesem Verzeichnis abgelegt.
3.) Nun das Programm 1x kompilieren, bzw. die *.exe erzeugen (strg + F9).
4.) Jetzt erst die benötigte Unit in die uses-Zeile aufnehmen.
5.) Programm erneut kompilieren und starten.

Dann läufts.
Fragt mich aber nicht warum...

SirThornberry 12. Aug 2010 11:28

AW: Compiler findet Unit nicht
 
Bitte unterlasse es zukünftig innerhalb von 24 Stunden mehrere Beiträge hintereinander zu verfassen ohne das zwischenzeitlich jemand anderes etwas gepostet hat. Das nennt man pushen und ist anderen Forenmitgliedern gegenüber unfair und deshalb innerhalb von 24 Std. nicht erlaubt. Wie bereits erwähnt kannst du deinen Beitrag innerhalb von 24 Stunden jederzeit editieren wenn du etwas hinzufügen willst.

mleyen 12. Aug 2010 11:29

AW: Compiler findet Unit nicht
 
Du kannst auch mehrere User in einer Antwort zitieren, indem du bei deiner Antwort etwas runterscrollst und rechts auch [Zitat] klickst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz