Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Verwendete Unit 'foo' kann nicht kompiliert werden (https://www.delphipraxis.net/173371-verwendete-unit-foo-kann-nicht-kompiliert-werden.html)

Medium 20. Feb 2013 15:29

Delphi-Version: 2007

Verwendete Unit 'foo' kann nicht kompiliert werden
 
Ahoi!

Ich habe eine kleine Komponentensammlung, die für bis D2006 ausgelegt war (zum Zeitpunkt als sie gebaut wurde war das die neuste). Ich muss sie nun in D2007 benutzen. Daher habe ich mir die Packages und Units zur Brust genommen, und das einzige was ich finden konnte waren eine Hand voll Conditionals die explizit die Unit Variants für D7-2006 deklariert haben. Einfach ein Conditional für D2007 zugefügt, und schon ließen sich die Packages kompilieren und installieren.

Die Dinger liegen also in meiner Palette, und scheinen "ready to use" zu sein. Nun öffne ich ein Projekt, welches diese Kompos nutzt, und Erzeuge es spaßeshalbar mal. Und dann trifft mich im Titel genannter Fehler. Was mich dabei irritiert: Die Unit war im Rahmes des Packages völlig problemlos zu kompilieren, und es liegt sogar eine DCU mit Datum von gerade eben im selben Verzeichnis. Warum wird also a) versucht erneut zu kompilieren, und b) warum klappt das in meinem Projekt auf ein Mal nicht mehr, wo es in der selben Instanz von Delphi 20sec vorher mit dem Package noch ging?

Heissen Dank für alle Ideen!

Sir Rufo 20. Feb 2013 20:56

AW: Verwendete Unit 'foo' kann nicht kompiliert werden
 
Hast du den Bibliothekspfad auf die dcu aus dem Package und den Suchpfad auf die Sourcen gelegt?

Medium 20. Feb 2013 22:21

AW: Verwendete Unit 'foo' kann nicht kompiliert werden
 
Ich habe sowohl den Such- als auch den Bibliothekspfad aller vier Verzeichnisse mit den Quellen und den DCUs eingetragen, ja. Anders gesagt, ist schon spät und manchmal drücke ich mich kompliziert aus: DCU und PAS liegen im selben Pfad, und die jeweiligen Pfade sind in beiden Listen vorhanden.

Ich bin soweit auch alle Units der Komponenten durchgegangen, und in keiner lässt sich mehr ein Conditional finden, dass angepasst werden müsste. Und es kompiliert ja auch - nur nicht, wenn ich ein Programm mit den Kompos erzeuge. Lediglich das Package zum installieren der Kompos mag mich. Ich habe, so weit ich das überblicke, auch alle Pfade eingetragen, in denen relevante Quelldateien liegen. Das prüfe ich morgen nochmals genauer. Schade auch, dass Delphi hier nicht mehr Infos liefert als "nö, geht nich" :?

Union 20. Feb 2013 22:26

AW: Verwendete Unit 'foo' kann nicht kompiliert werden
 
Gibt es vorher andere Fehlermeldungen? Oder siehst Du die wegen der ganzen Warnings nicht ;)

Medium 20. Feb 2013 22:40

AW: Verwendete Unit 'foo' kann nicht kompiliert werden
 
Ich bekomme eben leider nur genau diese eine Meldung beim Build. (Ich gehöre zu der zeitverschwenderischen Fraktion, die peinlichst darauf achtet, auch Warnungen stets zu beheben bevor ich einen Build an Kunden gebe :stupid:)

Union 20. Feb 2013 22:47

AW: Verwendete Unit 'foo' kann nicht kompiliert werden
 
Liegt es vielleicht an Deinen überarbeiteten Defines? Dass die Beim Übersetzen der BPL anders gesteuert werden als dann im Projekt?

Medium 20. Feb 2013 23:06

AW: Verwendete Unit 'foo' kann nicht kompiliert werden
 
Hmm, ich habe zu wenig Erfahrung mit Defines, um das beantworten zu können. Wundern würde es mich allerdings.

Im Grunde waren es solche Konstrukte:

Delphi-Quellcode:
implementation
uses
  {$IFDEF VER150} Variants, {$ENDIF}
  {$IFDEF VER160} Variants, {$ENDIF}
  {$IFDEF VER170} Variants, {$ENDIF}
  SomeOtherUnit;
Ich habe dieses dann einfach zu dem gemacht:
Delphi-Quellcode:
implementation
uses
  {$IFDEF VER150} Variants, {$ENDIF}
  {$IFDEF VER160} Variants, {$ENDIF}
  {$IFDEF VER170} Variants, {$ENDIF}
  {$IFDEF VER180} Variants, {$ENDIF}  // <- neu
  SomeOtherUnit;
Mehr war nicht zu ändern um die Packages installieren zu können.

Medium 21. Feb 2013 11:02

AW: Verwendete Unit 'foo' kann nicht kompiliert werden
 
Es gab tatsächlich in einem der 3 Verzeichnisse mit den Quellen noch ein Unterverzeichnis mit einer Hand voll Units. Ich nehme an, dass das Package explizit auf diese verwiesen hat, was mein Programm ja nicht tut. Jetzt wo das auch im Lib- und Suchpfad ist, klappt alles. Danke für den Stupser!
(Da könnte Delphi wirklich etwas ausführlicher sein in seiner Fehlermeldung, grr.)

DeddyH 21. Feb 2013 13:02

AW: Verwendete Unit 'foo' kann nicht kompiliert werden
 
Zitat:

Zitat von Medium (Beitrag 1204549)
Delphi-Quellcode:
implementation
uses
  {$IFDEF VER150} Variants, {$ENDIF}
  {$IFDEF VER160} Variants, {$ENDIF}
  {$IFDEF VER170} Variants, {$ENDIF}
  SomeOtherUnit;
Ich habe dieses dann einfach zu dem gemacht:
Delphi-Quellcode:
implementation
uses
  {$IFDEF VER150} Variants, {$ENDIF}
  {$IFDEF VER160} Variants, {$ENDIF}
  {$IFDEF VER170} Variants, {$ENDIF}
  {$IFDEF VER180} Variants, {$ENDIF}  // <- neu
  SomeOtherUnit;

Nur als gedanklicher Ansatz zu dieser Problematik: http://forum.delphi-treff.de/showthr...396#post228396

Medium 21. Feb 2013 13:27

AW: Verwendete Unit 'foo' kann nicht kompiliert werden
 
Da das Kompos von einem Drittanbieter sind, will ich da nicht zu groß drin basteln. Ein einfacher Fix reicht mir an dieser Stelle. Aber die Idee die du nennst, klingt prinzipiell sinnvoll!


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

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