AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Abfrage ob gerade für Delphi-Package kompiliert wird
Thema durchsuchen
Ansicht
Themen-Optionen

Abfrage ob gerade für Delphi-Package kompiliert wird

Ein Thema von Bernhard Geyer · begonnen am 31. Mär 2017 · letzter Beitrag vom 4. Apr 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#1

Abfrage ob gerade für Delphi-Package kompiliert wird

  Alt 31. Mär 2017, 13:20
Delphi-Version: XE6
Ich brauche ein Compilierungsfallunterscheidung ob etwas als Delphi-package compiliert wird oder "normal" als DLL/Exe.
Im Package-Fall soll ein Codeabschnitt nicht übersetzt werden.

Jedoch finde ich keine $IFOPT/$IFDEF-Wert für diesen Fall.
Kann mir jemand hier auf die Sprünge helfen?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Abfrage ob gerade für Delphi-Package kompiliert wird

  Alt 31. Mär 2017, 13:31
Ich brauche ein Compilierungsfallunterscheidung ob etwas als Delphi-package compiliert wird oder "normal" als DLL/Exe.
Im Package-Fall soll ein Codeabschnitt nicht übersetzt werden.

Jedoch finde ich keine $IFOPT/$IFDEF-Wert für diesen Fall.
Kann mir jemand hier auf die Sprünge helfen?
hmm Und wenn Du einfach im Dproj des Package ein Define setzt?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Abfrage ob gerade für Delphi-Package kompiliert wird

  Alt 31. Mär 2017, 13:40
hmm Und wenn Du einfach im Dproj des Package ein Define setzt?
Hab ich jetzt gemacht.
Wäre aber schön wenn ich ohne auskommen würde.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Abfrage ob gerade für Delphi-Package kompiliert wird

  Alt 31. Mär 2017, 14:05
Für den Compiler ist es beim Code egal, denn der unterscheidet sich bei EXE, DLL und BPL garnicht, abgesehn von der Eintrittsprozedur.

BPL ist eine DLL mit Zuzatsfunktionen
Und es ist problemlos möglich eine EXE auch als DLL in einer anderen EXE zu nutzen.

Genauso wollte ich gern beim Compilieren wissen, ob die EXE/DLL/BPL mit der VCL, FMX oder Keinem kompiliert wird,
um in meiner "Komponente" entsprechend gegen die "richtigen" Application-Klasse zu kompilieren, aber nee. (ein vorhandener Namespace ist leider auch nicht zuverlässig, vorallem wenn der Entwickler ohne Namespaces arbeitet)
$2B or not $2B
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#5

AW: Abfrage ob gerade für Delphi-Package kompiliert wird

  Alt 31. Mär 2017, 14:22
Funktioniert das wirklich ?
Zitat:
Und es ist problemlos möglich eine EXE auch als DLL in einer anderen EXE zu nutzen.
Ich habe das mal mit einer EXE unter XE7 getestet, aber durch die unterschiedliche Initialisierung eine EXE und DLL funktionierte das nicht. Gibt es da einen Trick?

Gruß Bernd
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Abfrage ob gerade für Delphi-Package kompiliert wird

  Alt 31. Mär 2017, 14:40
Funktioniert das wirklich ?
Zitat:
Und es ist problemlos möglich eine EXE auch als DLL in einer anderen EXE zu nutzen.
Ich habe das mal mit einer EXE unter XE7 getestet, aber durch die unterschiedliche Initialisierung eine EXE und DLL funktionierte das nicht. Gibt es da einen Trick?

Gruß Bernd
Was wolltest du denn genau machen?
Das reine Exportieren von Funktionen sollte ohne Probleme funktionieren.
Du hast halt bei einer Exe kein DllMain (zumindest hast du keinen Einfluss drauf), aber sonst ist eine DLL nur eine EXE mit nem gesetzten "DLL-Flag" im PE-Header
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Abfrage ob gerade für Delphi-Package kompiliert wird

  Alt 31. Mär 2017, 15:23
Funktioniert das wirklich ?
Zitat:
Und es ist problemlos möglich eine EXE auch als DLL in einer anderen EXE zu nutzen.
Ich habe das mal mit einer EXE unter XE7 getestet, aber durch die unterschiedliche Initialisierung eine EXE und DLL funktionierte das nicht. Gibt es da einen Trick?

Gruß Bernd
Was wolltest du denn genau machen?
Das reine Exportieren von Funktionen sollte ohne Probleme funktionieren.
Du hast halt bei einer Exe kein DllMain (zumindest hast du keinen Einfluss drauf), aber sonst ist eine DLL nur eine EXE mit nem gesetzten "DLL-Flag" im PE-Header
Wir überlagern die Delphi PNG-Klasse mit einer erweiterten PNG-Klasse welche auch weitere Methoden/Properties hat.
in der Anwendung wird die Delphi-PNG-Klasse mit TPicture.UnRegisterGraphicClass(TPNGImage) deregistriert sowie ein überlagern mittels TPNGObject = TUnserSuperPngObject gemacht.
Bei der Compilierung der Packages wirkt das aber nicht so das die Methoden welche auf Features der erweiterten PNG-Klasse zugreifen krachen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: Abfrage ob gerade für Delphi-Package kompiliert wird

  Alt 31. Mär 2017, 16:16
Man kann zur Laufzeit unterscheiden zumindest zwischen DLL und EXE unterscheiden: IsLibrary.

Man könnte aber auch über FindHInstance/FindClassHInstance mit der eigenen HInstance Variable vergleichen, um herauszufinden, ob die PNG-Klasse in der selben DLL/EXE liegt.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#9

AW: Abfrage ob gerade für Delphi-Package kompiliert wird

  Alt 31. Mär 2017, 18:07
Man kann zur Laufzeit unterscheiden zumindest zwischen DLL und EXE unterscheiden: IsLibrary.
Na ja, man kann auch direkt abfragen, ob es ein Package ist: ModuleIsPackage
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

AW: Abfrage ob gerade für Delphi-Package kompiliert wird

  Alt 31. Mär 2017, 18:51
ModuleIsPackage
Ich hatte, bevor ich geantwortet habe, noch nach "IsPackage" gesucht, da ich sowas im Kopf hatte (Einheitliche Benennung war noch nie "Delphi"'s Stärke)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 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