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).