Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu' (https://www.delphipraxis.net/171380-dxe3-f1026-datei-nicht-gefunden-designintf-dcu.html)

PeterPanino 4. Nov 2012 15:35

DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Hallo!

Ich verwende in Delphi XE3 Pro in einer Komponenten-Unit in der uses-Klausel DesignIntf, DesignEditors. Das Package mit dieser Unit kompiliert ohne Probleme.

Wenn ich jedoch ein Programm kompilieren möchte, das diese Komponente verwendet, meckert der Compiler:
"[dcc32 Fataler Fehler]: F1026 Datei nicht gefunden: 'DesignIntf.dcu'"

$(BDS)\source\ToolsAPI befindet sich natürlich im Suchpfad.

Wo ist der Fehler?

hoika 4. Nov 2012 16:18

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Hallo,

diverse Hinweise findest du hier.

https://forums.embarcadero.com/threa...?threadID=1966


Heiko

USchuster 4. Nov 2012 16:33

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Zitat:

Zitat von PeterPanino (Beitrag 1189646)
Ich verwende in Delphi XE3 Pro in einer Komponenten-Unit in der uses-Klausel DesignIntf, DesignEditors. Das Package mit dieser Unit kompiliert ohne Probleme.

Wenn ich jedoch ein Programm kompilieren möchte, das diese Komponente verwendet, meckert der Compiler:
"[dcc32 Fataler Fehler]: F1026 Datei nicht gefunden: 'DesignIntf.dcu'"

Wo ist der Fehler?

DesignIntf ist nur zur Verwendung zur Designzeit vorgesehen und der Fehler ist in der Komponenten-Unit, welche vermutlich auch einen Komponenteneditor enthält. Ein Komponenteneditor, welcher z.B. DesignIntf verwendet, muss daher in eine eigene Unit ausgelagert werden (oder man verwendet IFDEFs).

Zitat:

Zitat von PeterPanino (Beitrag 1189646)
$(BDS)\source\ToolsAPI befindet sich natürlich im Suchpfad.

Suchpfad <> Bibliothekspfad

PeterPanino 4. Nov 2012 17:10

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Danke! Hier nochmals die Lösung auf Deutsch und etwas präziser, wenn andere danach suchen sollten:

In Projekt -> Optionen -> Delphi-Compiler -> Compilieren -> Weitere Optionen -> Weitere Optionen für die Übergabe an den Compiler folgendes eintragen: -LUDesignIDE

Auf Englisch ist der Pfad: Project>Options>Delphi Compiler>Compiling>Other Options>Additional options to pass to the compiler

Leider steht auf dieser Seite nicht, ob der Fehler bei Embarcadero liegt, die vergessen haben, diese Option einzufügen, oder ob der Fehler in der Konfiguration des Komponenten-Packages liegt. Es wäre wichtig, diese Ursache zu kennen, vor allem, wenn man die Komponente weitergeben möchte!

PeterPanino 4. Nov 2012 17:14

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Zitat:

Zitat von USchuster (Beitrag 1189658)
Ein Komponenteneditor, welcher z.B. DesignIntf verwendet, muss daher in eine eigene Unit ausgelagert werden (oder man verwendet IFDEFs).

Vielen Dank für den Hinweis zur Fehlerursache! Welche IFDEFs sollte man wo und wie verwenden?

PeterPanino 4. Nov 2012 17:49

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Ich habe jetzt nachgeschaut: In der DPK-Datei ist die Compiler-Direktive {$DESIGNONLY} bereits enthalten!

Müsste nicht diese dafür sorgen, dass das Package nur für die IDE kompiliert wird?

USchuster 4. Nov 2012 17:58

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Zitat:

Zitat von PeterPanino (Beitrag 1189665)
Danke! Hier nochmals die Lösung auf Deutsch und etwas präziser, wenn andere danach suchen sollten:

In Projekt -> Optionen -> Delphi-Compiler -> Compilieren -> Weitere Optionen -> Weitere Optionen für die Übergabe an den Compiler folgendes eintragen: -LUDesignIDE

Auf Englisch ist der Pfad: Project>Options>Delphi Compiler>Compiling>Other Options>Additional options to pass to the compiler

Leider steht auf dieser Seite nicht, ob der Fehler bei Embarcadero liegt, die vergessen haben, diese Option einzufügen, oder ob der Fehler in der Konfiguration des Komponenten-Packages liegt. Es wäre wichtig, diese Ursache zu kennen, vor allem, wenn man die Komponente weitergeben möchte!

Autsch! Die benötigten Packages fügt man über den Projekt Manager (Requires bzw. Erfordert Eintrag) oder über die requires Klausel im Quellcode des Packages (.DPK) hinzu.

PeterPanino 4. Nov 2012 18:24

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Zitat:

Zitat von USchuster (Beitrag 1189658)
(oder man verwendet IFDEFs).

Ich habe jetzt in der Komponenten-Unit diese Compiler-Direktiven für Delphi XE3 verwendet:

{$IFDEF VER240} DesignIntf, DesignEditors, {$ENDIF}

Die Komponente kompiliert damit ohne Probleme, aber beim Kompilieren des Programms, das diese Komponente verwendet, meckert wieder der Compiler mit der obigen Fehlermeldung.

Welche IFDEFs sollte man denn nun verwenden?

daywalker9 4. Nov 2012 18:43

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Definiere dir ein eigenes zb:
Delphi-Quellcode:
{$IFDEF MYPACKAGE}{$ENDIF}
Und fügst diese in die Defines vom Package-Projekt. In deinem Programm brauchst du dann nichts mehr machen.

USchuster 4. Nov 2012 18:50

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Zitat:

Zitat von PeterPanino (Beitrag 1189673)
Zitat:

Zitat von USchuster (Beitrag 1189658)
(oder man verwendet IFDEFs).

Ich habe jetzt in der Komponenten-Unit diese Compiler-Direktiven für Delphi XE3 verwendet:

{$IFDEF VER240} DesignIntf, DesignEditors, {$ENDIF}

Die Komponente kompiliert damit ohne Probleme, aber beim Kompilieren des Programms, das diese Komponente verwendet, meckert wieder der Compiler mit der obigen Fehlermeldung.

Welche IFDEFs sollte man denn nun verwenden?

Es gibt kein eingebautes also hast Du die Qual der Wahl.

Den Designtime Code von Komponenten sollte man in eine separate Unit auslagern, aber wenn man kein Runtime Package benötigt, dann kann man auch den Designtime Code per IFDEF nur in das Designtime Package einkompilieren. Die Unit könnte so aussehen

Delphi-Quellcode:
unit FooComp;

interface

uses
  {$IFDEF DESIGN_ONLY}DesignIntf, DesignEditors,{$ENDIF}
  System.Classes;

  {$IFDEF DESIGN_ONLY}
  //Designtime Editor interface code depends on DesignIntf...
  {$ENDIF}

implementation

{$IFDEF DESIGN_ONLY}
//Designtime Editor implementation code depends on DesignIntf...
{$ENDIF}

end.
und das Package wäre dann im Beispiel mit der Bedingung DESIGN_ONLY zu kompilieren.

PeterPanino 4. Nov 2012 18:52

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Zitat:

Zitat von daywalker9 (Beitrag 1189674)
Und fügst diese in die Defines vom Package-Projekt.

Wo? Wie? Was? Bitte um ausführlichere Angaben. Danke!

PeterPanino 4. Nov 2012 19:12

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
@USchuster

Vielen Dank für die ausführlichen Hinweise!

Wenn ich {$IFDEF DESIGN_ONLY} verwende, meckert zwar der Compiler im Programm (das die Komponente verwendet) nicht mehr, aber der designtime-spezifische Komponenten-Code wird in der IDE (also zur designtime) nicht mehr ausgeführt!

PeterPanino 4. Nov 2012 20:19

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Danke für die Hinweise, jetzt funktioniert es!

Ich habe jetzt den Komponenten-Editor Code in eine andere Unit ausgelagert und RegisterComponentEditor im initialization Abschnitt dieser Unit aufgerufen. Ist das richtig? Denn natürlich kann ich von meiner Komponenten-Unit keinen Code aus der Komponenten-Editor Unit aufrufen, da sonst der Compiler in dem Programm, das die Komponente verwendet, ja sonst gleich wieder meckern würde!

USchuster 4. Nov 2012 21:19

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Zitat:

Zitat von PeterPanino (Beitrag 1189678)
Wenn ich {$IFDEF DESIGN_ONLY} verwende, meckert zwar der Compiler im Programm (das die Komponente verwendet) nicht mehr, aber der designtime-spezifische Komponenten-Code wird in der IDE (also zur designtime) nicht mehr ausgeführt!

DESIGN_ONLY hätte in den Projektoptionen des Packages auf der Seite "Delphi-Compiler" unter Bedingungen eingetragen werden müssen.

Zitat:

Zitat von PeterPanino (Beitrag 1189682)
Ich habe jetzt den Komponenten-Editor Code in eine andere Unit ausgelagert und RegisterComponentEditor im initialization Abschnitt dieser Unit aufgerufen. Ist das richtig?

Nein. Dafür gibt es die Register Prozedur, welche die IDE beim Installieren des Packages ausführt.

Delphi-Quellcode:
unit FooEditor;

interface

procedure Register;

implementation

uses
  DesignIntf;

procedure Register;
begin
  RegisterComponentEditor(...);
end;

end.

PeterPanino 4. Nov 2012 22:48

AW: DXE3: F1026 Datei nicht gefunden: 'DesignIntf.dcu'
 
Danke für die Hinweise, die mir sehr geholfen haben!

Zitat:

Zitat von USchuster (Beitrag 1189693)
DESIGN_ONLY hätte in den Projektoptionen des Packages auf der Seite "Delphi-Compiler" unter Bedingungen eingetragen werden müssen.


Dort steht zur Zeit "DEBUG".


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:42 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