Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Compilerschalter für "Ist Komponente Installiert" (https://www.delphipraxis.net/71152-compilerschalter-fuer-ist-komponente-installiert.html)

Cyberbob 9. Jun 2006 19:58


Compilerschalter für "Ist Komponente Installiert"
 
Hallo @all,

gibt es einen Compilerschalter, mit dem ich während der Compilierung Prüfen kann, ob eine Komponente Installiert ist und die entsprechenden Units dann Laden kann?

SirThornberry 9. Jun 2006 20:01

Re: Compilerschalter für "Ist Komponente Installiert&am
 
wsa verstehst du unter "installiert"? Meinst du damit das man es zur Designzeit auf's Formular packen kann? Davon sollte man nichts abhängig machen denn man kann jede Komponente auch dynamich erzeugen.

Cyberbob 9. Jun 2006 20:25

Re: Compilerschalter für "Ist Komponente Installiert&am
 
Ich hab mir unter D6 das Package WinXP Installiert, für das XP-Theming. Dieses muss ich nicht aufs Formular ziehen, es reicht, wenn ich in die Uses-Klausel "WinXP" schreibe. Ich wollte, das es nur geladen wird, wenn es auch Installiert ist. Etwa so

System, Windows {$IF INSTALLED="WinXP"}, WinXP {$ENDIF}, Dialogs;

SirThornberry 9. Jun 2006 20:50

Re: Compilerschalter für "Ist Komponente Installiert&am
 
wenn es davon abhängig ist das in den uses "winxp" auftaucht könntest du einfach in dieser Unit einen Define machen und darauf prüfen

Cyberbob 9. Jun 2006 21:03

Re: Compilerschalter für "Ist Komponente Installiert&am
 
Ich ahbe jetzt in das Create der Komponente ein {$DEFINE XPMANIFEST} geschrieben und in einem Textprogramm folgende USES-Klausel

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs {$IFDEF XPMANIFEST}, WinXP{$ENDIF}, StdCtrls ;

Trotzdem funktioniert es nicht. Das PAckage wird nicht mitgeladen, obwohl es neu Installiert ist.

DGL-luke 9. Jun 2006 21:05

Re: Compilerschalter für "Ist Komponente Installiert&am
 
Das geht so nicht, die Compilerschalter/-anweisungen hab mit dem Programmablauf überhaupt nix zu tun!

Sie werden vom Compiler Zeile für Zeile abgearbeitet.

Ich würde den Compilerschalter daher in die dpr-Datei schreiben.

Cyberbob 9. Jun 2006 21:19

Re: Compilerschalter für "Ist Komponente Installiert&am
 
Geht auch nicht

ich hab jetzt in der .dpr-datei:

uses
Forms,
{$IFDEF XPMANIFEST} WinXP, {$ENDIF}
...

stehen.

DGL-luke 9. Jun 2006 21:24

Re: Compilerschalter für "Ist Komponente Installiert&am
 
^^

Ich meinte das {$DEFINE XPManifest} sollte in der dpr stehen. Denn im Create der Komponente wird ganz sicher erst geprüft, ob die Konstante definiert ist, und dann wird sie erst definiert.

USchalter.pas:

Delphi-Quellcode:
unit USchalter;
{$DEFINE XPManifest}
end.
UPuef.pas:

Delphi-Quellcode:
unit UPruef;

interface

uses {$IFDEF XPManifest} WinXP, {$ENDIF} USchalter, ....

...
Ist dir klar, dass es so nicht gehen kann?

Cyberbob 9. Jun 2006 21:39

Re: Compilerschalter für "Ist Komponente Installiert&am
 
Ich habe jetzt das {$DEFINE XPManifest} in die dpk-Datei geschriben, zu den anderen Compileranweisungen. Ohne erfolg!

Olli 9. Jun 2006 21:58

Re: Compilerschalter für "Ist Komponente Installiert&am
 
Zitat:

Zitat von SirThornberry
wenn es davon abhängig ist das in den uses "winxp" auftaucht könntest du einfach in dieser Unit einen Define machen und darauf prüfen

Das geht nun wiederum nicht, weil Delphi keine globalen Compilerschalter in dieser Form kennt. Stattdessen muß man mit INCLUDE-Dateien arbeiten

{$INCLUDE Datei.pas}

in denen man dann das DEFINE mitgibt und welche man in alle relevanten Units einbindet. Deswegen machen es die JEDIs auch so, weil's ander nicht geht.


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