Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen. (https://www.delphipraxis.net/170977-aeltere-komponente-von-delphi7-xe2-64bit-weiter-nutzen.html)

NooL 13. Okt 2012 08:48

Ä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:

Also am besten, wir gehen Dein Problem Schritt für Schritt an ... Zuerst eine Pas in ein Package erzeugen:
* alles schließen
-> Du hast eine leere Projektgruppe
* Package hinzufügen
-> einen allgemeinen Namen vergeben "MeineKomponenten" (anders als die Komponente heißt)
* Rechtsklick auf Package / Hinzufügen / Unit
-> eine Pas hast Du ja offenbar, diese muss eine Prozedur Register enthalten
* Rechtsklick auf Package / Installieren

Dann kannst Du zu Deinem Projekt wechseln und solltest Deine Komponente verwenden können.
Diese Position Installieren -> Rechtsklick auf Package / Installieren finde ich leider nicht.
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

mkinzler 13. Okt 2012 10:31

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)

himitsu 13. Okt 2012 10:37

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
 
Wie liegt denn die Komponente vor?

Wenn nicht als Unit mit
Delphi-Quellcode:
procedure Register;
und Delphi-Referenz durchsuchenRegisterComponents, dann mußt'e das och noch machen.
(kannst dir aber über
Delphi-Quellcode:
Komponenten > Neue Kompoente...
helfen lassen)

Ist schon ein Package (*.dpk) vorhanden, dann
Delphi-Quellcode:
Komponente > Package installieren...
.

Und ansonsten
Delphi-Quellcode:
Komponente > Komponente installieren...
und da dann entweder ein vorhandenen Package auswählen oder ein neues Package erstellen lassen.



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

mkinzler 13. Okt 2012 10:40

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
 
Für 64Bit werden aber 2 Packages benötigt

NooL 13. Okt 2012 13:21

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:

Für 64Bit werden aber 2 Packages benötigt
Das sagt mir nun leider überhaupt nichts.

Zitat:

( Da Design-Packages momentan nur 32Bit sind)
Könnt ihr mal bitte in den Anhang schauen, ob das Design-Packages sind ?
Habe da den Hinweis auf eine fehlende designide erhalten.

Gruß Nool.

himitsu 13. Okt 2012 17:46

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von NooL (Beitrag 1186884)
Zitat:

Für 64Bit werden aber 2 Packages benötigt
Das sagt mir nun leider überhaupt nichts.

Die Delphi-IDE ist halt nur als 32-Bit verfügbar, also kann man darin nur 32 bittige Packages laden.
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.

NooL 13. Okt 2012 19:54

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.

himitsu 13. Okt 2012 20:41

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:

NooL 14. Okt 2012 16:51

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 11:49 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