![]() |
Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
Hallo,
ich benötige mal Eure Hilfe bzgl. Installation zweier älterer Komponenten unter Delphi XE2. Ich möchte eine Anwendung von Delphi7 32bit nach Delphi XE2 64bit portieren. Im Delphi7 hatte ich für eines meiner Programme zwei Komponenten EmiDriveCombo (TEmiDriveComboBox von Eric MINET) und CoolGauge (TjsCoolGauge von Jazarsoft VCL Development Team) installiert, welche danach auch in der Tool-Palette sichtbar waren. Leider fehlt mir jetzt das Verständnis, wie ich die älteren Komponenten unter XE2 installieren und aus der Tool-Palette nutzen kann. Ich habe hier im Forum schon folgende Anleitung gefunden, aber bin irgendwie zu blöd :? oder zu alt :wink: dafür. Zitat:
Bei Rechtsklick auf Package ist nur z.B. Erzeugen auswählbar. Bei Delphi7 habe ich es immer über Komponente installieren durchgeführt und in die dclusr.dpk integriert. Jedoch scheint es unter XE2 nun anders zu funktionieren. Ich wende mich daher hier an die Profis, ob es irgendwie möglich ist die alten Komponenten über die Tool-Palette weiter zu benutzen, vorallem auch als 64bit-Anwendung. Ich verwende Delphi nur als Leie, um mir einige Hilfsmittel für meine Arbeit zu programmieren. Ich bitte daher um Nachsicht. XE2 mit der ganzen Projektverwaltung ist für mich momentan noch ein großes Wirrwar. Im Voraus schon vielen Dank für eure Unterstützung. mfg Nool |
AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
Den Code für eine Komponente kann man in 2 Bereiche:
Laufzeitcode: das eigentliche Verhalten im später erzeugten Programm. Entwurfzeitcode: Integration in die IDE und eventuell Code zur Interaktion in der IDE. Beim Anlegen eines Packages kann man wählen, welchen Art von Code dieses enthalten soll, nur Entwurfspackages kann man installieren. Es ist auch möglich, beides in ein Package zu packen, dann funktioniert es aber nur unter 32 Bit ( Da Design-Packages momentan nur 32Bit sind) |
AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
Wie liegt denn die Komponente vor?
Wenn nicht als Unit mit
Delphi-Quellcode:
und
procedure Register;
![]() (kannst dir aber über
Delphi-Quellcode:
helfen lassen)
Komponenten > Neue Kompoente...
Ist schon ein Package (*.dpk) vorhanden, dann
Delphi-Quellcode:
.
Komponente > Package installieren...
Und ansonsten
Delphi-Quellcode:
und da dann entweder ein vorhandenen Package auswählen oder ein neues Package erstellen lassen.
Komponente > Komponente installieren...
Ich hoffe du hast auch beachtet, daß der Code dieser Komponente für Unicode und Win64 kompatibel sein muß. Ich versuch grade eine Komponente für Win64 klarzumachen und das ist leider nicht so leicht, da sehr viele Casts falsch sind (Pointer/TObject <> Integer), aber leider sind vorallem viele Schnittstellen total fehlerhaft/unpassend implementiert, so daß man da erstmal Alles komplett überarbeiten und Dokus welzen darf, wie es denn richtig ist oder ob's doch richtig was und man da z.B. bei einem GetID nicht einfach ein Objekt reincasten darf, sondern wirklich eine ID (interne Tabelle mit ID <> Objekt) erstellen muß. |
AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
Für 64Bit werden aber 2 Packages benötigt
|
AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
Liste der Anhänge anzeigen (Anzahl: 2)
Danke himitsu und mkinzler für die Rückinfo.
Also, beide Komponenten liegen als .Pas vor. Sind momentan auch im Internet noch frei downloadbar. Wenn ich die Komponente einzeln Compiliere, dann meckert er momentan nur an Char / AnsiChar rum, da ja Char neuerdings = WideChar (2 Byte) ist. Aber ich denke, das läßt sich beseitigen. Ich habe zwei ältere Anwendungen von mir bereits erfolgreich nach 64bit portiert, aber dort hatte ich nur Standard-Komponenten verwendet und mußte nur die Char-Geschichte anpassen. In beiden Units ist jeweils procedure Register; und RegisterComponents('Jazarsoft', [TjsCoolGauge]); und RegisterComponents(ThePalettePage, [TEmiDriveComboBox]); vorhanden. Leider reicht mein wissen nicht so weit, um zu erkennen, ob Quelltext 64bit-tauglich sind. Bei Delphi7 habe ich die vorhandene dclusr.dpk ausgewählt und die Komponente erschien dann eben in der Tool-Palette. Jetzt habe schon mal eine .dpk mit einer Komponente erzeugt, jedoch raff ich es leider nicht, wie ich die jetzt in mein Projekt aktiviere. Vieleicht könnt ihr mir das mal idiotensicher :wink: erklären. Ich habe mal beide Komponenten angehängt. Evtl. erkennt ihr ja gleich, ob das überhaupt sinn macht. Es wäre eben einfach nur schön gewesen, Komponenten einbinden, altes Projekt compilieren und fertig. Zur not muß ich dann eben im Projekt die Sachen anders gestalten. Da ich viel mit WinPE3.0 32bit gearbeitet habe, brauche ich eben meine Anwendungen nach und nach für für WinPE3.0 64bit. Ich habe zwar auch zwittriges WinPE3.0 32bit+64bit am laufen, aber da wird die Imagegröße langsam zu viel. Zitat:
Zitat:
Habe da den Hinweis auf eine fehlende designide erhalten. Gruß Nool. |
AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Für ein 64 Bit-Programm braucht man aber eventuell ein 64 Bit-Package. Selbst wenn die IDE 64 Bit wäre, dann gäbe es dort das selbe Problem mit 32 Bit-Programmen. Heißt also, wenn man für die EXE Packages benötigt, dann braucht man für jedes Ziel eine passende Package-Version. Also aktuell wären das ein 32 Bit-DesignTime-Package, ein 32 Bit-Runtime-Package und ein 64 Bit-Runtime-Package. (Runtime-Packages für OSX und Co. noch nichtmal einbezogen) Versuch es mal so: Die PAS müssen im Suchpfad des Projekts liegen, das Package muß als Win32 kompiliert sein und das Projekt darf nicht mit Laufzeitpackages kompiliert werden. |
AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
OK, danke für den Anhang.
Werde es morgen ausprobieren, komme heute leider nicht mehr dazu. Ein Problem stellt sich dann natürlich. Wenn das Package nur als 32bit vorliegt und die Anwendung selbst 64bit ist und dann im WinPE3.0 64bit in einer reinen 64bit Umgebung (ohne SysWOW64)läuft, ob dann das 32bit Package noch akzepiert wird. Desweiteren ist mir jetzt auch noch nicht ganz klar, wenn ich ohne Laufzeitpackages kompiliere, was ich der Anwendung dann alles separat mitgeben muss. Habe bis jetzt aus Sicherheit und Bequemlichkeit immer mit Laufzeitpackages kompiliert. Die EXEn sind dann zwar recht groß, aber das war bis jetzt nicht so wichtig. Gibt es noch andere Vorzüge ohne Laufz. zu kompilieren. Na gut werde es morgen sehen. Melde mich wieder. Wenn es zu viele Klimmzüge bei der Portierung werden, muss ich dann halt einen anderen Weg gehen. Aber erstmal vielen Dank für die Hinweise. Gruß Nool. |
AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
Das Designtime-Package kann (aktuell) nur 32 Bit sein, da Delphi schließlich keine 64 Bit-Packages laden kann.
Wie gesagt, das Package als 32 Bit und dann dein 64 Bit-Programm nicht mit Laufzeitpackages, sondern direkt mit den PAS kompilieren. Oder du mußt dir eben noch weitere 32 und 64 Bit Laufzeitpackages erstellen. Hab es nicht geprüft, aber so auf den ersten Blick sah es nicht so aus, als wenn da immernoch was Schlimmes drin wäre. (ich glaub die paar Stellen hab ich erwischt) Falls der Code immernoch funktioniert (ich bau gerne mal kleine Fehlerchen ein :lol:), dann dürfte er hoffentlich auch mit 64 Bit laufen ... konnte die unvollständigen Dateien ja schlecht testen :zwinker: |
AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
Hallo himitsu,
jsCoolGauge zeigt sich jetzt in der Tool-Palette unter Jazarsoft gemäß RegisterComponents wie es sein sollte und mein altes Delphi7-Projekt meckert es auch nicht mehr an. Aber emiDriveCombo ist in der Tool-Palette nicht sichtbar, müsste aber eigentlich lt. RegisterComponents unter Add-Ons auftauchen. Ich kann an beiden Units keinen mir bekannten markannten Unterschied feststellen. Einzig emiDriveCombo wird noch eine emiDriveCombo.res mitgegeben. Vieleicht hast du ja noch eine Idee, woran es liegen könnte, aber bitte nicht unnötige Energie rein stecken. Werde die Laufwerksauswahl dann eben anders gestalten. Falls du keine Idee mehr hast, dann hat sich dieser Betrag erledigt und ich danke dir für deine Mühe. Muss dieser Beitrag irgendwie noch als erledigt markiert werden ? Habe hier leider nichts gefunden. Danke und Gruß Nool ! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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 by Thomas Breitkreuz