![]() |
Komponente auch für 64 Bit fit machen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
was muss ich tun um diese bisher nur auf 32 Bit ausgelegte Komponente auch 64 Bit tauglich zu machen? Ich meine jetzt weniger den Code, das denke ich weiß ich, sondern wie muss ich das Package anpassen etc. Das wäre (in einer etwas verbesserten Form) nämlich ein weiterer Kandidat zum OpenSOurce publizieren und bei GetIt einreichen... Grüße TurboMagic |
AW: Komponente auch für 64 Bit fit machen
Zitat:
Wenn ich eine Komponente habe, erstelle ich ein ganz normales Package, kompiliere und installiere es ohne irgendwas an der Bittigkeit in der IDE einzustellen. Die Pfade zu den Sources füge ich dann in den Bibliothekspfaden bei 32- und 64bit ein. Das wars. |
AW: Komponente auch für 64 Bit fit machen
Zitat:
Ganz wichtig: Das Package in ein Runtime- und ein Designtime-Package splitten. Hier gibt es ein paar weitere sehr gute Ratschläge: ![]() Hier auch: ![]() Wegen der 64-Bit brauchst du dem Runtime-Package bzw. den Runtime-Packages nur noch die passende Platform hinzufügen. Die Designtime-Packages bleiben bei 32-Bit, da die IDE nur 32-Bit haben will. |
AW: Komponente auch für 64 Bit fit machen
Hallo,
danke mal für die Tipps, ein paar Fragen hätte ich aber noch: 1. In den EInstellungen für das Package habe ich in D10.4.2 als Libsuffix dieses $(Auto) ausgewählt, was aber in der Hilfe leider nicht beschrieben ist. Was genau bewirkt das und was ist mit älteren Delphi Versionen? 2. Wie splitte ich das in ein Designtime und ein Runtime Package? Ich habe Packages bisher noch nicht entwickelt. 3. OT: warum ist meine Hilfe in 10.4.2 auf EN wo doch WIndows und Delphi selbst DE sind? Grüße TurboMagic |
AW: Komponente auch für 64 Bit fit machen
Zitat:
(Ich habe es nicht ausprobiert.) Zitat:
Generell: Alles, was zum Funktioneren die IDE benötigt. Zitat:
Nachtrag: Eine grundsätzliche Frage solltest Du Dir aber stellen: Brauchst du überhaupt ein Runtime-Package? Ich persönlich habe so gut wie nie ein Programm mit Packages compiliert, fast immer wird der komplette Source in das Executable eingebunden. Ohne Runtime-Package ist die Frage ob 32 oder 64 Bit obsolete, denn 64 Bit gibt es nur für die Runtime-Packages. |
AW: Komponente auch für 64 Bit fit machen
Zitat:
Goodbye package hell! Gruß, Renate |
AW: Komponente auch für 64 Bit fit machen
In der englischen Hilfe steht es.
![]() Standard ist Beides (muß mindestens als 32 Bit da sein, optional auch noch als 64 Bit für zusätzliche Runtime) und es gibt RuntimeOnly (nur im Programm ... egal) und auch DesignTimeOnly (nur in IDE ... kann nur 32 Bit sein, da IDE ausschließlich als 32 Bit) |
AW: Komponente auch für 64 Bit fit machen
@Himitsu
Ja, ich hab mich zu früh gefreut. Jetzt will er in das design package alle units packen, die vorher im runtime waren. Auch die, die er zu design time gar nicht braucht. Vielleicht sollte ich dafür aber ein neues Thema anfangen. Ich schaff es immer wieder in package hell zu landen, weil alles, was die Komponenten brauchen, anscheinend immer in irgendwelchen packages sein muss. @Dummzeuch Wie hast du das gemeint mit nur in .exe einbinden? Gruß, Renate |
AW: Komponente auch für 64 Bit fit machen
Das geht ja noch.
Ich hab nach jahre-/wochenlanger Suche nun endlich alle DesignTimePackages aus der Runtime raus, also im Programm wurden DesignTimePackages geladen, auch DAS EINE Package (DesignIde), was man ja eigentlich nicht mitgeben dürfte und was im Programm eh nichts zu suchen hätte. Im allgemeinen ist aber nichts dagegen einzuwenden, wenn die Designtime auch die Runtime benutzt. Im Requires eines DesignTimePackage darf ein RuntimeOnlyPackage stehen, aber hiervon wird/darf nur das DesignTime-Package im delphi registriert/installiert werden. (das Andere wird einfach automatisch geladen) |
AW: Komponente auch für 64 Bit fit machen
Zitat:
Also zuerst musst du immer das Runtimepackage erstellen und kompilieren und erst danach das Designtime, welches dann das Runtime Package nutzen soll. |
AW: Komponente auch für 64 Bit fit machen
Zitat:
Ansonsten wird immer der Sourcecode der Units aus dem Package in das Executable compiliert und man braucht zum Auführen des Programms dann das Package nicht. |
AW: Komponente auch für 64 Bit fit machen
Zitat:
Man kann ein kombiniertes Designtime- und Runtime-Package erstellen. Dieses Package kann man dann auch in die IDE laden. Man kann es aber nicht als Package für eine Programm verwenden (vgl. vorige Antwort.) Der Normalfall ist, dass man den Code aufteilt. In das Runtime-Pacakge kommt das, was man braucht, damit man das die Komponenten in einem Programm verwenden kann. In das Designtime-Package kommt das, was die IDE zusätzlich benötigt, um die Komponenten im Formular-Designer/Property Inspector etc. anzuzeigen. |
AW: Komponente auch für 64 Bit fit machen
Das "normale" RegisterClass/RegisterComponent/RegisterNoIcon muß nicht in ein DesignTimeOnlyPackage.
Diese Funktionen verstecken sich in System.Classes (wenn die System.Classes in der IDE geladen ist, dann trägt die IDE dort die Zeiger zu den DesignMethoden ein).
Delphi-Quellcode:
Also hier ein gemischtes Package für Design und Runtime zu nutzen, wäre OK,
procedure Register;
implementation procedure Register; begin RegisterClass(TIrgendwas); //RegisterClasses([TIrgendwas, TNochmehr]); end; aber wenn man ein DesignTimePackage hat, dann kann es auch dort rein, damit man sein Designzeugs zusammen hat. Und ja, ansonsten gehört in Runtime keinerlei Designzeugs. In die IDE muß es als Package rein, ins Programm wird das Package nur geladen, wenn mit Laufzeitpackages kompilier wurde und ansonsten würde der Code direkt in die EXE/DLL eingelinkt. Im letzeren Fall muß auch der Bibliothekssuchpfad zu *.dcu oder *.pas eingetragen sein und bei Laufzeitpackages muß der DCP-Suchpfad zur *.dcp existieren (die eigentlichen PAS/DCU hier unwichtig). Die *.bpl müssen in einem Umgebungsvariable eingetragen sein, wenn die EXE sonst diese Packages nicht finden würde. (z.B. im Programmverzeichnis liegend) Der Suchpfad zu den *.pas braucht man auch noch, wenn man sonst nur gegen die Packages kompiliert, aber die Units dennoch im Editor/Debugger finden möchte. |
AW: Komponente auch für 64 Bit fit machen
@Dummzeuch @Rolf Frei @Himitsu
Ist mir alles bekannt. Ich habe Komponenten seit Delphi 1 geschrieben. Ich hatte gehofft, dass es inzwischen was neues gibt, das einem hilft, aus den ganzen "requires"-Ketten auszubrechen. Ich mach dann mal Schluss hier, Danke :) |
AW: Komponente auch für 64 Bit fit machen
Das REQUIRES bei den Packages
und der Laufzeitpackages-String in den Projektoptionen von EXE/DLL sagt, welche Packages du verwenden willst. Wenn ein Package dort nicht angegeben ist (fehlt), dann wird die PAS/DCU direkt gelinkt (einkompiliert). Bei Packages bekommst eine Warnung, wenn Units doppelt drin sind, in mehr als einem geladenen Package. Bei EXE/DLL mußt es selbst sehen, z.B. am "wurde implizit einkompiliert"-Compilerhinweis, welcher aber nicht kommt, wenn man "explizit" die Unit mehrfach drin hat. (also in Projektverwaltung, bzw. in der DPR mit dem "IN") Unit in zwei DLLs ist geil, vor allem da dann auch die globalen Variablen doppelt sind und jede DLL (oder die EXE) dann seine eigene Variriable hat. :freak: Oder geh zu Lazarus ... die keinen keine Packages. (das "Package" bei denen ist was Anderes ... ein Projekt für den PackageManager, also was bei uns GetIt ist) Man muß in Package ein anderes Package nicht linken. Dann werden die Units nicht aus dem anderen Package gelinkt, sondern direkt einkompiliert. (drum muß man auch immer zwangsweise das DesignIde-Package im Requires haben, weil es diese Units nicht einzeln gibt) |
AW: Komponente auch für 64 Bit fit machen
Noch eine ANmerkung zu meinem Fall: es geht um eine nicht visuelle Komponente...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 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