AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Komponente für 32 als auch 64 Bit

Ein Thema von JYPDWhite · begonnen am 8. Jun 2017 · letzter Beitrag vom 9. Jun 2017
Antwort Antwort
Seite 1 von 2  1 2   
JYPDWhite

Registriert seit: 29. Sep 2010
28 Beiträge
 
#1

Komponente für 32 als auch 64 Bit

  Alt 8. Jun 2017, 17:04
Hallo,

ich habe bereits gesucht und auch hier in der DP zwei Threads zum Thema gefunden, jedoch bin ich daraus leider nicht so richtig schlau geworden.

Ich habe hier ein Package was 3 Komponenten beinhaltet.
Die Anwendungen die die Komponenten bis jetzt verwendet haben waren 32 Bit VCL Anwendungen. Bei denen ist es kein Problem die Komponenten im Designer per Drag and Drop von der Komponentenleiste auf das Formular zu ziehen.

Jetzt möchte ich eine Anwendung erstellen die als 64bit kompiliert werden soll, diese soll auch die Komponenten nutzen. Dazu habe folgendes probiert
1. Im Package als Buildziel 64 Bit hinzugefügt
2. Erstes Package auf "nur Laufzeit" umgestellt und dem das Buildziel 64bit hinzugefügt. 2. Package erstellt dieses auf "Designzeit" eingestellt. Im 2. Package die register procedures aus dem ersten Packet eingefügt. und das Package installiert
3. wie 2. aber 2 "Laufzeit" Packages erzeugt eins für 32 bit und eins für 64 bit. Und ein drittes Package was die "Designzeit" Register procedure enthält.


keine der Versuche hat leider zum Erfolg geführt. Delphi graut mir meine Komponenten bei 64Bit Anwendungen weiterhin aus und zeigt im Tooltip an dass diese Komponenten nur für 32Bit vorhanden sind.

Was habe ich übersehen? Muss ich irgendwelche Suchpfade oder Bibliothekspfade umstellen?

Über Hilfe wäre ich sehr dankbar. Ein Beispielprojekt kann ich nicht direkt zur Verfügung stellen da ich nicht die Berechtigung habe die Packages zu veröffentlichen.

Danke schon mal im Voraus.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Komponente für 32 als auch 64 Bit

  Alt 8. Jun 2017, 17:22
Normalerweise sollte es genügen, wenn du das Laufzeit-Packge bzw. das Entwurfs- und Laufzeit-Package mit beiden Plattformen anlegst. Wichtig ist, daß beim Compilieren des Win32-Package die Win64-Plattform schon vorhanden ist. Diese Information wird im Win32-Package hinterlegt, denn das ist ja das, was die IDE lädt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Komponente für 32 als auch 64 Bit

  Alt 8. Jun 2017, 17:24
Deklariere die Komponenten so:
Delphi-Quellcode:
type
  [ComponentPlatformsAttribute(pidWin32 or pidWin64)] // Only supported on Win32 and Win64
  TMyComponent = class(TComponent)
  private
    ...
  end;
damit ist die Komponente für 32 und 64 Bit erlaubt.

Das sind die aktuell erlaubten PID* :
Zitat:
[ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidOSX32 or
pidiOSSimulator or pidiOSDevice32 or pidiOSDevice64 or pidAndroid or
pidLinux64)]
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Komponente für 32 als auch 64 Bit

  Alt 8. Jun 2017, 17:27
Delphi-Quellcode:
type
  [ComponentPlatformsAttribute(pidWin32 or pidWin64)] // Only supported on Win32 and Win64
Das ist aber nur notwendig, wenn das Package Komponenten enthält, die nicht für alle Plattformen des Projekts verfügbar sind.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rollo62
Online

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#5

AW: Komponente für 32 als auch 64 Bit

  Alt 8. Jun 2017, 17:30
Nur mal interessehalber, ich gehe davon aus das dies hier nicht funktiniert:

Delphi-Quellcode:
type
  [ComponentPlatformsAttribute(pidWin32)] // Only supported on Win32
  TMyComponent = class(TComponent)
  private
    ...
  end;

type
  [ComponentPlatformsAttribute(pidWin64)] // Only supported on Win64 slighlty different
  TMyComponent = class(TComponent)
  private
    ...
  end;
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Komponente für 32 als auch 64 Bit

  Alt 8. Jun 2017, 17:33
Delphi-Quellcode:
type
  [ComponentPlatformsAttribute(pidWin32 or pidWin64)] // Only supported on Win32 and Win64
Das ist aber nur notwendig, wenn das Package Komponenten enthält, die nicht für alle Plattformen des Projekts verfügbar sind.
Ja so sollte es sein, bei uns ist es aber häufig aufgetreten dass ohne diese Flags, die Komponenten nicht für Win64 angezeigt wurden.
Fritz Westermann
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Komponente für 32 als auch 64 Bit

  Alt 8. Jun 2017, 17:35
Nur mal interessehalber, ich gehe davon aus das dies hier nicht funktiniert:

Delphi-Quellcode:
type
  [ComponentPlatformsAttribute(pidWin32)] // Only supported on Win32
  TMyComponent = class(TComponent)
  private
    ...
  end;

type
  [ComponentPlatformsAttribute(pidWin64)] // Only supported on Win64 slighlty different
  TMyComponent = class(TComponent)
  private
    ...
  end;
Du meinst 2 * der gleiche Name aber unterschiedlich in der Platform?

Nein das geht nicht. Es gelten ja die normalen Regeln für den Compiler. Das andere sind Attribute die zur Runtime ausgewertet werden
Fritz Westermann
  Mit Zitat antworten Zitat
JYPDWhite

Registriert seit: 29. Sep 2010
28 Beiträge
 
#8

AW: Komponente für 32 als auch 64 Bit

  Alt 8. Jun 2017, 17:57
Normalerweise sollte es genügen, wenn du das Laufzeit-Packge bzw. das Entwurfs- und Laufzeit-Package mit beiden Plattformen anlegst. Wichtig ist, daß beim Compilieren des Win32-Package die Win64-Plattform schon vorhanden ist. Diese Information wird im Win32-Package hinterlegt, denn das ist ja das, was die IDE lädt.
Habe ich eigentlich probiert hat bei mir im Test nicht funktioniert.
Ich habe jetzt im Anhang eine Testkomponente die unter 32 Bit verwendbar ist und unter 64 Bit nicht. Eventuell kommen wir ja so weiter.

Edit: Verwendete Delphiversion ist XE²
Angehängte Dateien
Dateityp: 7z Komponententest.7z (3,6 KB, 8x aufgerufen)

Geändert von JYPDWhite ( 8. Jun 2017 um 17:58 Uhr) Grund: Delphiversion hinzugefügt
  Mit Zitat antworten Zitat
Rollo62
Online

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#9

AW: Komponente für 32 als auch 64 Bit

  Alt 8. Jun 2017, 18:01
Ok, dann vielleicht in Kombination mit $IFDEFs, die Attribute steuern dann wohl nur die Anzeige im Designer.
Macht aber wahrscheinlich sowieso wenig Sinn so extrem unterschiedliche Versioen zu haben,
dass man verschiedene Klassen bräuchte.
Ich würds definitiv dann auch eher in Unterklassen auslagen was spezifisch ist.

Rollo
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Komponente für 32 als auch 64 Bit

  Alt 8. Jun 2017, 18:12
Normalerweise sollte es genügen, wenn du das Laufzeit-Packge bzw. das Entwurfs- und Laufzeit-Package mit beiden Plattformen anlegst. Wichtig ist, daß beim Compilieren des Win32-Package die Win64-Plattform schon vorhanden ist. Diese Information wird im Win32-Package hinterlegt, denn das ist ja das, was die IDE lädt.
Habe ich eigentlich probiert hat bei mir im Test nicht funktioniert.
Ich habe jetzt im Anhang eine Testkomponente die unter 32 Bit verwendbar ist und unter 64 Bit nicht. Eventuell kommen wir ja so weiter.

Edit: Verwendete Delphiversion ist XE²
Verwende ein Projekt für das Runtimepackage. Kompiliere dieses für beide Plattformen.
DAs Designtimepackage natürlich nur 32 Bit, geht auch nicht anders.
Das sollte reichen....
Fritz Westermann
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:42 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