AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.
Thema durchsuchen
Ansicht
Themen-Optionen

Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.

Ein Thema von NooL · begonnen am 13. Okt 2012 · letzter Beitrag vom 14. Okt 2012
Antwort Antwort
NooL

Registriert seit: 26. Okt 2008
Ort: Dreiländereck
15 Beiträge
 
Delphi 7 Professional
 
#1

Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.

  Alt 13. Okt 2012, 08:48
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
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
Nool
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.

  Alt 13. Okt 2012, 10:31
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)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.

  Alt 13. Okt 2012, 10:37
Wie liegt denn die Komponente vor?

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

Ist schon ein Package (*.dpk) vorhanden, dann Komponente > Package installieren... .

Und ansonsten 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ß.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (13. Okt 2012 um 10:41 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.

  Alt 13. Okt 2012, 10:40
Für 64Bit werden aber 2 Packages benötigt
Markus Kinzler

Geändert von mkinzler (13. Okt 2012 um 11:12 Uhr)
  Mit Zitat antworten Zitat
NooL

Registriert seit: 26. Okt 2008
Ort: Dreiländereck
15 Beiträge
 
Delphi 7 Professional
 
#5

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.

  Alt 13. Okt 2012, 13:21
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 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.
Angehängte Dateien
Dateityp: pas emiDriveCombo.pas (16,7 KB, 12x aufgerufen)
Dateityp: pas jsCoolGauge.pas (11,3 KB, 10x aufgerufen)
Nool

Geändert von NooL (13. Okt 2012 um 14:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.

  Alt 13. Okt 2012, 17:46
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.
Angehängte Dateien
Dateityp: 7z Neuer Ordner.7z (7,1 KB, 25x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
NooL

Registriert seit: 26. Okt 2008
Ort: Dreiländereck
15 Beiträge
 
Delphi 7 Professional
 
#7

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.

  Alt 13. Okt 2012, 19:54
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.
Nool
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#8

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.

  Alt 13. Okt 2012, 20:41
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 ), dann dürfte er hoffentlich auch mit 64 Bit laufen ... konnte die unvollständigen Dateien ja schlecht testen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
NooL

Registriert seit: 26. Okt 2008
Ort: Dreiländereck
15 Beiträge
 
Delphi 7 Professional
 
#9

AW: Ältere Komponente von Delphi7 in XE2 64bit weiter nutzen.

  Alt 14. Okt 2012, 16:51
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 !
Nool
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:03 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