|
![]() |
Registriert seit: 21. Jul 2002
Dieser Artikel ist keine Lösung, die immer funktioniert!!!
Im Moment plage ich mich damit rum, dass ich Komponenten als Delphi 7 im neuen Delphi 2005 benötige, die vom Autor/von den Autoren noch nicht auf die neue Version vorbereitet wurden. Ich habe inzwischen einige Komponenten portieren können und das lief meistens nach diesem Schema ab. Ich betone nochmal, dass diese Lösung nicht immer funktionieren wird, sondern nur ein trivialen bis mittleren Fällen (einfache Komponenten bis hin zu Komponenten, die noch mit den Design-Editoren rumspielen [müssen]). Außerdem gehe ich davon aus, dass die Komponente unter Delphi 7 einwandfrei kompiliert und funktioniert hat. Es also kein Problem mit den Designeditoren (sprich den entsprechenden Units) gibt. Wer damit ein Problem hat sollte sich erstmal an ![]() Häufig liegt bei Komponenten eine Datei bei, in der alle Compilerversionen definiert sind. Diese heißt häufig Compilers.inc oder so ähnlich. Darin muss sollte für alle Fälle erstmal eine Definition für die neue Delphi-Version angelegt werden. Ich habe es mir immer einfach gemacht und die D7-Definition einfach kopiert und korrigiert. Beispiel:
Delphi-Quellcode:
Das muss allerdings in der gesamten Datei gemacht werden, denn häufig werden auch noch Defines wie COMPILER_7_UP erstellt, diese sollten dann auch für D2005 definiert werden.
{VORHER:}
{$ifdef VER150} {$define COMPILER_7} {$define DELPHI} {$define DELPHI_7} {$endif} {NACHHER:} {$ifdef VER170} {$define COMPILER_9} {$define DELPHI} {$define DELPHI_9} {$endif} {$ifdef VER150} {$define COMPILER_7} {$define DELPHI} {$define DELPHI_7} {$endif} Jetzt geht es relativ einfach weiter. Dupliziert die Packages für D7 einfach im Explorer (markieren, STRG+C, STRG+V) und benennt die Dateien um. Am sinnvollsten ist, in der bisherigen Form der Bennung weiterzumachen. Also aus VirtualTreesD7D.dpk sollte VirtualTreesD9D.dpk gemacht werden. Achtet darauf, dass ihr das sowohl bei Design- als auch bei den Runtime-Packages macht. Nun werden die DPK-Dateien in Delphi geöffnet. Es sollte sich der Import-Assistent öffnen und fragen, ob das Paket für Delphi für .NET oder Win32 aufbereitet werden soll. Wählt dabei den Eintrag Delphi für Win32 aus und klickt auf OK. Im Projektmanager (standardmäßig auf der rechten Seite der IDE) nun ein Rechtsklick auf die BPL-Datei (z.B. VirtualTreesD9D.bpl) und "Quelltext anzeigen" anklicken. In der Datei sollte jetzt erstmal oben der Dateiname angepasst werden (aus der Sieben wieder eine Neun machen). In Designpackages muss u.U. noch bei den requires-Angaben eine Zahl ausgetauscht werden. Das gleiche wieder u.U. bei Runtimepackages machen. Dann sollte alles fertig sein. Alles speichern und ganz normal Kompilieren und Installieren, wie bei D7 und anderen D9-Paketen auch. Delphi legt noch ziemlich viel Müll ab, deswegen könnt ihr (hat bei mir bisher zu keinen Fehlern geführt) diese Dateien löschen: *.bdsproj.local, *.cfg und das Verzeichnis ModelSupport, sofern ihr keine Modellansichten braucht. Ich hoffe, dass ich jetzt nicht schon wieder irgendwelche Fehler gemacht habe und das bei euch funktioniert. Bisher habe ich das bei folgenden Komponenten geschafft: VirtualTrees (aka VST), Aducom SQLite, ... Hoffe dass es bei euch auch soweit funktioniert, Chris |
Robert_G
|
#2
![]() Dupliziert die Packages für D7 einfach im Explorer (markieren, STRG+C, STRG+V) und benennt die Dateien um. Am sinnvollsten ist, in der bisherigen Form der Bennung weiterzumachen. Also aus VirtualTreesD7D.dpk sollte VirtualTreesD9D.dpk gemacht werden. Achtet darauf, dass ihr das sowohl bei Design- als auch bei den Runtime-Packages macht.
![]() Delphi8 & 2005 legen in deinen "Eigenen Dateien" den Ordner "BDS Projects" o.ä. an. Darin kannst du ja einen Ordner Library packen. Dem spendierst du die Unterordner DCU & Output. In den Optionen setzt du jetzt die DCU- & Outputpfade standardmäßig auf diese Ordner. Ich habe unter Library ein D7, D8 und D2005 stehen. Darunter erst die DCUs und den Output. Schon kommen sich Units,Packages,Echsen,... , die von verschiedenen Delphi-Versionen kompiliert wurden, nicht mehr in die Quere. Außerdem musst du nur die 2 Ordner als Suchpfad global definieren. Das spart das nervige Anpassen der Suchpfade ![]() ![]() In Designpackages muss u.U. noch bei den requires-Angaben eine Zahl ausgetauscht werden. Das gleiche wieder u.U. bei Runtimepackages machen.
Werden andere Packages benötigt muss man sie auch fit für mehrere Dephi-Versionen machen. ![]() Dann sollte alles fertig sein. Alles speichern und ganz normal Kompilieren und Installieren, wie bei D7 und anderen D9-Paketen auch.
Ansonsten läuft der gleiche Code überall. ![]() ![]() Delphi legt noch ziemlich viel Müll ab, deswegen könnt ihr (hat bei mir bisher zu keinen Fehlern geführt) diese Dateien löschen: *.bdsproj.local, *.cfg und das Verzeichnis ModelSupport, sofern ihr keine Modellansichten braucht.
![]() ![]() Ich hoffe, dass ich jetzt nicht schon wieder irgendwelche Fehler gemacht habe und das bei euch funktioniert. Bisher habe ich das bei folgenden Komponenten geschafft: VirtualTrees (aka VST), Aducom SQLite, ...
|
![]() |
Turbo Delphi für Win32 |
#3
Hi Robert,
![]() ![]() Dupliziert die Packages für D7 einfach im Explorer (markieren, STRG+C, STRG+V) und benennt die Dateien um. Am sinnvollsten ist, in der bisherigen Form der Bennung weiterzumachen. Also aus VirtualTreesD7D.dpk sollte VirtualTreesD9D.dpk gemacht werden. Achtet darauf, dass ihr das sowohl bei Design- als auch bei den Runtime-Packages macht.
![]() ![]() Delphi8 & 2005 legen in deinen "Eigenen Dateien" den Ordner "BDS Projects" o.ä. an. Darin kannst du ja einen Ordner Library packen.
Dem spendierst du die Unterordner DCU & Output. In den Optionen setzt du jetzt die DCU- & Outputpfade standardmäßig auf diese Ordner. Ich habe unter Library ein D7, D8 und D2005 stehen. Darunter erst die DCUs und den Output. Schon kommen sich Units,Packages,Echsen,... , die von verschiedenen Delphi-Versionen kompiliert wurden, nicht mehr in die Quere. Außerdem musst du nur die 2 Ordner als Suchpfad global definieren. Das spart das nervige Anpassen der Suchpfade ![]() ![]() ![]() ![]() ![]() In Designpackages muss u.U. noch bei den requires-Angaben eine Zahl ausgetauscht werden. Das gleiche wieder u.U. bei Runtimepackages machen.
Werden andere Packages benötigt muss man sie auch fit für mehrere Dephi-Versionen machen. ![]() ![]() Dann sollte alles fertig sein. Alles speichern und ganz normal Kompilieren und Installieren, wie bei D7 und anderen D9-Paketen auch.
Ansonsten läuft der gleiche Code überall. ![]() ![]() ![]() Delphi legt noch ziemlich viel Müll ab, deswegen könnt ihr (hat bei mir bisher zu keinen Fehlern geführt) diese Dateien löschen: *.bdsproj.local, *.cfg und das Verzeichnis ModelSupport, sofern ihr keine Modellansichten braucht.
![]() ![]() ![]() ![]() Ich hoffe, dass ich jetzt nicht schon wieder irgendwelche Fehler gemacht habe und das bei euch funktioniert. Bisher habe ich das bei folgenden Komponenten geschafft: VirtualTrees (aka VST), Aducom SQLite, ...
Chris |
![]() |
Robert_G
|
#4
![]() Ich sprach ja auch davon nur die Packages zu duplizieren und die Sourcen an sich zu behalten. Oder habe ich jetzt was falsch verstanden? Die Sourcen werden ja an sich wiederverwendet.
![]() ![]() ![]() Delphi8 & 2005 legen in deinen "Eigenen Dateien" den Ordner "BDS Projects" o.ä. an. Darin kannst du ja einen Ordner Library packen.
Dem spendierst du die Unterordner DCU & Output. In den Optionen setzt du jetzt die DCU- & Outputpfade standardmäßig auf diese Ordner. Ich habe unter Library ein D7, D8 und D2005 stehen. Darunter erst die DCUs und den Output. Schon kommen sich Units,Packages,Echsen,... , die von verschiedenen Delphi-Versionen kompiliert wurden, nicht mehr in die Quere. Außerdem musst du nur die 2 Ordner als Suchpfad global definieren. Das spart das nervige Anpassen der Suchpfade ![]() ![]() ![]() Ich habe den Ordner mit den Komponenten, so wie ich sie heruntergeladen und entpackt habe und meine BPLs liegen dort, wo Delphi das standardmäßig hinpackt.
![]() Ich habe generell andere Dinge zu tun, als mich mit installierten Komponenten zu beschäftigen.
![]() ![]() Aber das sind nur meine 2 cents und keine für jeden dringend zu befolgenden Vorschriften. ![]() |
![]() |
|
#5
Hi,
I don't have Delphi 2005. If you have a working source for it then I'll be interested in the changes. I would appreciate if you post it to support at aducom dot com. I can apply the changes to the official source. albert |
![]() |
Turbo Delphi für Win32 |
#7
Hi,
theoretisch ließe sich das machen, aber ich habe kein Delphi 2006 und weiß nicht, ob es da was spezielles zu beachten gibt. Aber i.A. sollte es so sein, dass obiges von jeder Delphi-Version zu einer beliebigen höheren funktioniert (ausgenommen Delphi 8 und alle .NET- und non-D-Win32-Projekte). ![]() Chris |
![]() |
Delphi 10.4 Sydney |
#8
Für D2006 wäre folgende Ergänzung nötig:
Delphi-Quellcode:
Je nach Komponenten kommt noch sowas in der Art hinzu (z. B. Jedi)
{$ifdef VER180}
{$define COMPILER10} {$define DELPHI} {$define DELPHI10} {$endif}
Delphi-Quellcode:
{$IFDEF DELPHI10} {$DEFINE DELPHI10_UP} {$DEFINE DELPHI9_UP} {$DEFINE DELPHI8_UP} {$DEFINE DELPHI7_UP} {$DEFINE DELPHI6_UP} {$DEFINE DELPHI5_UP} {$DEFINE DELPHI4_UP} {$DEFINE DELPHI3_UP} {$DEFINE DELPHI2_UP} {$DEFINE DELPHI1_UP} {$ENDIF} {$ifdef COMPILER10} {$define COMPILER6_UP} {$define COMPILER7_UP} {$define COMPILER8_UP} {$define COMPILER9_UP} {$define COMPILER10_UP} {$endif} |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |