Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eine Frage zu DesignIntf.pas / dcu (https://www.delphipraxis.net/31655-eine-frage-zu-designintf-pas-dcu.html)

MaBuSE 12. Okt 2004 11:03


Eine Frage zu DesignIntf.pas / dcu
 
Hallo,

nein - ich will nicht wissen wie und warum DesgnIntf nach DesignIntf zu ändern ist.
Das ist mir schon klar und wurde hier in der DP auch schon beschrieben.

Meine Frage ist folgende:
Warum werden keine *.dcu Dateien erzeugt?
(Bitte unten weiterlesen bevor Du antwortest)

Wenn ich eine Package (z.B. make_dcu.dpk) mit folgendem Inhalt habe:
Delphi-Quellcode:
package make_dcu;

{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DESIGNONLY}
{$IMPLICITBUILD OFF}

requires
  rtl,
  vcl,
  designide,
  vclactnband,
  vclx,
  visualclx;

contains
  make_dcu_unit in 'make_dcu_unit.pas';

end.
die Unit make_dcu_unit hat folgenden Inhalt:
Delphi-Quellcode:
unit make_dcu_unit;

// Unit dient nur zur Erstellung der *.dcu Dateien

interface

uses
  DesignConst, DesignEditors, DesignIntf, DesignMenus, DesignWindows,
  EditIntf, ExptIntf, FileIntf, IStreams, PropertyCategories, ToolIntf,
  ToolsAPI, TreeIntf, VCLEditors, VCLSprigs, VcsIntf, VirtIntf;

implementation

end.
Das ganze ist in einem Verzeichnis (z.B. c:\temp\test) gespeichert und wird kompiliert.

Warum erzeugt der Compiler für die Units keine *.dcu Dateien?
Es werden nur die make_dcu.* und make_dcu_unit.dcu Dateien erstellt.
Die einzige Ausnahme ist die erstellte VcsIntf.dcu.

Ich weiß, das diese Dateien nur in Designtime Package verwendet werden können und es irgendwie auch eine gewisse Compilermagic gibt, die das Kompilieren in eine *.exe erschwert.
Die Symbolinformationen der Dateien sind ja in der designide.dcp Datei enthalten. Diese werden in die *.bpl Dateien gelinkt.
(btw: es werden Warnungen ausgegeben, das einige Dateien veraltet sind, es sind also neuere Versionen in designide.dcp vorhanden)

Aber: ich habe auch schon Verzeichnisse gefunden in denen eine kompilierte DesignIntf.dcu zu finden war. (von mir kompiliert mit D7)

Wenn diese Dateien nicht kompiliert werden, warum gibt es dann diese von mir kompilierte Fassung der *.dcu ???

Ich hoffe jemand hat eine schlaue Antwort für mich :mrgreen:

:dp:

Delphi_Fanatic 12. Okt 2004 11:35

Re: Eine Frage zu DesignIntf.pas / dcu
 
Lass die Finger von DesignIntf !
Unter Umständen kannst Du Dir sonst 'ne Menge Probleme einhandeln, wenn Du mal von einer Delphi-Version
auf eine andere migrieren willst.

Das ist ohnehin nur Spiel-Kram, was man - theoretisch - damit alles anstellen kann.
Einen wirklichen Zuwachs an Produktivität oder gar spürbare Vorteile für den End-Anwender wirst Du mit
irgendeinem Rum-Gefummel an der DesignIntf garantiert nicht erreichen.

sakura 12. Okt 2004 11:41

Re: Eine Frage zu DesignIntf.pas / dcu
 
@Delphi_Fanatic: Ich glaube, dass Du hier nur falsche Unterstellungen machst - zumal Deine Antwort wirklich nicht das Problem löst. Ich kenne MaBuSE gut genug, um zu wissen, dass Deine Antwort in jeder Hinsicht in die falsche Richtung ging ;)

...:cat:...

MaBuSE 12. Okt 2004 12:39

Re: Eine Frage zu DesignIntf.pas / dcu
 
Zitat:

Zitat von Delphi_Fanatic
Lass die Finger von DesignIntf !

Warum?
Diese Units werden von vielen Komponenten verwendet.
In $(DELPHI)\Source\ToolsAPI\*.* sind die Schnittstellen zu der Delphi IDE definiert.

Zitat:

Zitat von Delphi_Fanatic
Unter Umständen kannst Du Dir sonst 'ne Menge Probleme einhandeln, wenn Du mal von einer Delphi-Version auf eine andere migrieren willst.

Keine nicht lösbaren.
Ich habe schon Komponenten geschrieben (mit Property Editoren) die sich von D1 bis D9 kompilieren lassen.

Zitat:

Zitat von Delphi_Fanatic
Das ist ohnehin nur Spiel-Kram, was man - theoretisch - damit alles anstellen kann. Einen wirklichen Zuwachs an Produktivität oder gar spürbare Vorteile für den End-Anwender wirst Du mit irgendeinem Rum-Gefummel an der DesignIntf garantiert nicht erreichen.

Das sehe ich anders.
Ein kleines Beispiel für einen Property Editor.

Nehmen wir eine Komponente die die Eigenschaft Color (TColor) besitzt.
Ohne den Property Editor könnte man nur einen RGB Farbwert (z.B. $00BFEDAF) eingeben.
Erst der Property Editor gibt Dir die Möglichkeit eine Combobox mit den Farben und den Realnamen (z.B. clRed) zu sehen. Bei einem Doppelklick auf die Eigenschaft geht außerdem ein Farbauswahldialog auf.

Oder alle Experten die in die IDE eingeklinkt werden können (GExperts, SourceConneXion, JCL, ...)

Das nur zu Erklärung wozu die ToolsAPI gut ist.

Da ich aber nicht beeinflussen kann ob die Komponenten von Drittanbietern diese ToolsAPI benutzen, muss ich sie unterstützen. (Was ja auch kein Problem darstellt)

Ich will die ToolsAPI Dateien ja nicht ändern, nur benutzen.


Ich habe folgendes Problem:
Für unser Releasemanagement muss der Integrationsserver um Delphi 7 erweitert werden.
Alle Komponenten der Projekte sind in IBM Rational ClearCase versioniert.
Es existiert eine spezielle ViewSpec um alle benötigten Sourcen bereitzustellen.
Das Dumme ist, dass beim Kompilieren der Komponenten in deren Output Vob eine DesignIntf.dcu steht, das Configuration Record bei den nicht geänderten Dateien der ViewSpec unvollständig ist, was dann bei labeln des Releases ein Problem darstellt. (DesignIntf.dcu wird nicht mitgelabelt.)

Ich will nun wissen wie diese DesignIntf.dcu dorthin kommt.

[edit]@sakura: Danke für Deine Antwort ;-)[/edit]

Robert Marquardt 12. Okt 2004 12:47

Re: Eine Frage zu DesignIntf.pas / dcu
 
Die dcu Files fuer die Delphi Sourcen sind in .dcp Files zusammengefasst. Da DesignIde im requires steht, wird natuerlich das .dcp bevorzugt.

MaBuSE 12. Okt 2004 12:55

Re: Eine Frage zu DesignIntf.pas / dcu
 
Zitat:

Zitat von Robert Marquardt
Die dcu Files fuer die Delphi Sourcen sind in .dcp Files zusammengefasst. Da DesignIde im requires steht, wird natuerlich das .dcp bevorzugt.

Warum finde ich aber in 2 der vielen Verzeichnisse eine DesignIntf.dcu Datei?
Die auch noch von mir erstellt wurde.
Ich kann das aber nicht mehr nachvollziehen. :evil:

[edit]
Anmerkung: In dem *.dcp sind nur die Symbole enthalten, nicht die kompilierten Units selbst.
[/edit]

Robert Marquardt 12. Okt 2004 12:59

Re: Eine Frage zu DesignIntf.pas / dcu
 
Wenn du DesignIde nicht im requires hattest und gleichzeitig die ToolsAPI Source-Directory in den Pfaden, dann findet Delphi ja die Sourcen zum Uebersetzen und ist auch zufrieden.

Robert Marquardt 12. Okt 2004 13:04

Re: Eine Frage zu DesignIntf.pas / dcu
 
Vermutlich werden immer die .bpl Files genutzt, also dynamisch gelinkt.

MaBuSE 12. Okt 2004 13:33

Re: Eine Frage zu DesignIntf.pas / dcu
 
Zitat:

Zitat von Robert Marquardt
Wenn du DesignIde nicht im requires hattest und gleichzeitig die ToolsAPI Source-Directory in den Pfaden, dann findet Delphi ja die Sourcen zum Uebersetzen und ist auch zufrieden.

Du hast Recht.
Ich habe das getestet.

Delphi-Quellcode:
package make_dcu;

{...}

requires
  rtl,
  vcl;

contains
  make_dcu_unit in 'make_dcu_unit.pas';

end.
und
Delphi-Quellcode:
unit make_dcu_unit;

// Unit dient nur zur Erstellung der *.dcu Dateien

interface

uses
  DesignIntf;

implementation

end.
Obiges Package erzeugt die DesignIntf.dcu.
Dann fragt die IDE ob in requires designide.dcp hinzugefügt werden soll.
Ist die designide.dcp in der requires enthalten, dann wird die *.dcu nicht mehr erstellt.


Vielen Dank an Robert, Sakura und Delphi_Fanatic für die Antworten. :cheers:


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