Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Komonenten und 64-Bit (https://www.delphipraxis.net/217334-komonenten-und-64-bit.html)

Willie1 11. Jun 2025 19:52

Komonenten und 64-Bit
 
N'Abend Community,

ich will nicht ernsthaft 64-Bit Programme schreiben. Aber neugierig, wie ich bin, habe ich versucht mein Komponenten Package mit 64-Bit zu kompilieren. Es ging nicht wegen Designide. Wenn das ein ernstes Problem ist, dann lasst es oder lässt sich der Fehler leicht beheben?

Gruß Willie.

himitsu 11. Jun 2025 20:52

AW: Komonenten und 64-Bit
 
Da die/deine IDE nur 32 Bit ist, können DesignTime-Packages auch nur 32 Bit sein und daher gibt es das DesignIde-Package auch nur für 32 Bit. (ohne die SourceCodes im Compiler-Suchpfad, nur im Editor-Suchpfad)

ABER, seit dem aktuellsten Delphi 12.3 gibt es zusätzlich auch eine nigelnagelneue 64-Bit-IDE, welche dann natürlich nur 64 Bit-DesignTime-Packages laden kann.
Ob man seine Packages jeweils in der anderen IDE auch kompilieren kann, weiß ich grade nicht.



Runtime-Packages (also das, wo die eigentliche Komponente reingehört, welches dann vom jeweiligen DesignTime-Package genutzt wird), können sowohl 32, als auch 64 Bit sein.

Runtime-Packages braucht man aber eigentlich nur, wenn man auch mit Packages kompilieren will.

deine Auswahlmöglichkeiten:
* 32 Bit-DesignTime-Package inkl. Komponente (nur für den Designer) und PAS oder vorkompilierte DCUs im Komponentensuchpfad.
* 32 Bit und 64 Bit-Runtime-Package + 32 Bit-DesignTime-Package (und optional 64 Bit-DesignTime-Package für neue IDE) und (optional) am Besten auch noch die DCU für 32 und 64 Bit im Suchpfad.



PS: Ja, Runtime mit kleinem t, weil ein Wort, und DesignTime mit großem T, da zwei Wörter. :duck:

peterbelow 12. Jun 2025 14:46

AW: Komonenten und 64-Bit
 
Zitat:

Zitat von Willie1 (Beitrag 1549378)
N'Abend Community,

ich will nicht ernsthaft 64-Bit Programme schreiben. Aber neugierig, wie ich bin, habe ich versucht mein Komponenten Package mit 64-Bit zu kompilieren. Es ging nicht wegen Designide. Wenn das ein ernstes Problem ist, dann lasst es oder lässt sich der Fehler leicht beheben?

Gruß Willie.

Splitte deine Componenten-Package in eine designtime und eine runtime package. Die erstere sollte nur den Code für property- und component-Editoren enthalten und die Register-Prozedur, der Code für die Componenten selbst und eventuell notwendige eigene support-Units kommt in die runtime-package, die wird in die requires-Liste der designtime package aufgenommen.

Von beiden Packages baust Du erstmal 32-Bit-Versionen, achte darauf, das in den IDE Options (unter IDE -> Language -> Delphi -> Library für die Windows 32-bit Platform die Output-Directories für Packages und DCP korrekt gesetzt sind.
Für die runtime package kannst Du auch in der 32-bit IDE eine 64-bit-Version bauen; die landet dann in dem für die Windows 64-bit gesetzten Package output directory. Es ist aber essentiell dass sie nicht den gleichen Dateinamen hat wie die 32-bit Version, sonst gibt es Konflikte beim Laden wenn Du deine Komponenten in einer für 64 bit kompilierten Anwendung verwenden willst, die mit runtime-packages gebaut wurde. Stell sicher, das in den Optionen für die beiden Package-Projekte die automatische Generierung von Namens-Suffixen aktiviert ist. (Project options -> Description, LIB suffix auf $(auto), LIB version auf $(platform), wenigstens für die 64-bit Version).

Die 64-bit-Version der designtime package kannst Du nur mit der 64-bit-Version bauen und verwenden (bauen geht eventuell auch mit der 32-bit IDE, hab's nicht probiert).

Sieh Dir auch mal die Verwendung des ComponentPlatformAttribute an, damit kann man spezifizieren, für welche Platformen deine Komponente(n) verwendet werden können; die IDE verwendet das dann, um die Komponenten nur für Projekte anzubieten, für die sie auch verwendet werden können.

Wie Himitsu schon sagte brauchst Du die runtime package im Prinzip nur, falls Du Projekte mit packages bauen willst, aber eine saubere Trennung stellt sicher, das keine der Units für die Komponenten Designtime-Units verwendet, was Du in deinen Projekten ja nicht darfst (und auch nicht kannst).

Willie1 14. Jun 2025 17:21

AW: Komonenten und 64-Bit
 
Hallo Freunde,

da habe ich ausführliche Infos von euch bekommen.
Ich muss erstmal mein Projekt von Delphi 10 (auf dem alten PC) zum neuen mit Delphi 12 portieren. Nachdem ich die eigenen Komponenten erfolgreich installiert habe, sollte das Kompilieren klappen. Dann bin ich froh.

Ich sehe im Moment keinen Nachteil darin, dass mein Programm mit 32-Bit läuft. Schließlich ist Delphi selbst auch ein 32-Bit Programm. Für die Zukunft werde ich es mal mit 64-Bit versuchen.

Mir ist aufgefallen, dass bei 64-Bit der Datei-öffnen-Dialog wesentlich schneller aufgeht.

Gruß Willie.

jaenicke 14. Jun 2025 22:31

AW: Komonenten und 64-Bit
 
Zitat:

Zitat von Willie1 (Beitrag 1549421)
Ich sehe im Moment keinen Nachteil darin, dass mein Programm mit 32-Bit läuft.

Solange du nicht mehr als 1-2 GB Arbeitsspeicher brauchst, kannst du ruhig bei 32-Bit bleiben.

Zitat:

Zitat von Willie1 (Beitrag 1549421)
Schließlich ist Delphi selbst auch ein 32-Bit Programm.

Nicht mehr nur, die neue 64-Bit IDE wurde ja schon erwähnt.

Dennis07 22. Jun 2025 20:32

AW: Komonenten und 64-Bit
 
Zitat:

Zitat von peterbelow (Beitrag 1549388)
Die 64-bit-Version der designtime package kannst Du nur mit der 64-bit-Version bauen und verwenden (bauen geht eventuell auch mit der 32-bit IDE, hab's nicht probiert).

Ja, natürlich geht bauen in der 32-Bit. Leider kannst du aber soweit ich weiß in der 64-Bit nur 64-Bit bauen (war zumindest mal so). Installieren geht natürlich nur in der entsprechenden Variante.

Uwe Raabe 22. Jun 2025 21:27

AW: Komonenten und 64-Bit
 
Zitat:

Zitat von Dennis07 (Beitrag 1549611)
Leider kannst du aber soweit ich weiß in der 64-Bit nur 64-Bit bauen (war zumindest mal so).

Das ist eigentlich auch immer noch so (ist auch so gewollt). Allerdings kann man über Build Groups auch andere Zielplattformen mit der 64-Bit IDE erzeugen (bin nicht sicher, ob das auch so gewollt ist).

himitsu 23. Jun 2025 02:07

AW: Komonenten und 64-Bit
 
Und GetIt ist in der 64-Bit-IDE auch nicht wirklich benutzbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz