Hallo liebe Community,
heute glücklicherweise ohne aktive Frage, sondern wieder ein Memo für mich in der Zukunft, und Know-How für alle die es brauchen können.
Ich habe seit ein paar Tagen Delphi 10.4 Sydney und muss nun logischerweise alle bestehenden Projekte von Delphi 2010 dorthin protieren - mit fast 12 Jahren Differenz in der Technik natürlich ein verhältnismäßig großer Sprung. Alle externen Komponenten musste ich neu dazu kaufen. Als eines der letzten Probleme bestand dann nur noch die "
JEDI API 2.3 and
JEDI WSCL 0.9.3". Bitte nicht verwechseln mit den
Jedi-Komponenten (JCL) aus dem GetIt-Paketmanager!
Diese spezielle
Jedi-Bibliotheken verwende ich unter anderem, um verschiedenen Benutzer(-gruppen) in meinem Programm verschiedene Rechte erteilen zu können:
https://www.delphipraxis.net/184812-...verwenden.html
Nun habe ich auch nach mehreren Tagen diese Bibliotheken nicht zum laufen bekommen. Das Projekt wird leider nicht mehr betreut, viele genannte Homepages und das
SVN gibt es scheinbar nicht mehr. Wenn man denn weiß "wie", kann man die Units trotzdem einfach weiterverwenden:
1) Lade die letzte offizielle Version von der offizielle Homepage (aktuell bei SourceForge?) herunter und entpacke die Dateien z.B. nach "C:\
JEDI API 2.3 and
JEDI WSCL 0.9.3"
2) Erstelle ein leeres Delphi-Projekt (
VCL Formularanwendung), das alle *deine* Units verwendet, die auf Units aus diesem Paket zugreifen müssen
3) Füge bei den Projekt-Optionen (nicht bei den Delphi-Optionen) bei Bibliotheken/Suchpfade alle benötigten Pfade hinzu. Das sollten sein:
Code:
C:\
JEDI API 2.3 and
JEDI WSCL 0.9.3\jwa\branches\2.3\Common
C:\
JEDI API 2.3 and
JEDI WSCL 0.9.3\jwa\branches\2.3\Win32API
C:\
JEDI API 2.3 and
JEDI WSCL 0.9.3\
jwscl\branches\0.9.3\source
C:\
JEDI API 2.3 and
JEDI WSCL 0.9.3\
jwscl\branches\0.9.3\includes
4) Setze in den Projekt-Optionen das "Ausgabeverzeichnis der Units" auf einen existierenden, leeren Order ("c:\dcutemp\")
5) Trage manuell die u.g. Patches in die Quelltext-Dateien ein
6) Kompiliere das Projekt
6a) Falls das kompilieren nicht klappt, ziehe öffne alle
Unit, die nicht kompiliert werden können, und ziehe sie auf die rechte Seite in den äh? Projektmanager? So auf jeden Fall, dass diese Quelltextdatei(en) bestandteil des Projektes sind. Mit 6) fortfahren.
7) Kopiere alle .dcu-Dateien aus dem bei 4) genannten Ordner in einen gemeinsamen Ordner deiner Projekte, der überall im Such-/Bibliothekspfad steht
8) Deine anderen Projekte sollten sich nun wieder korrekt ausführen lassen.
Dieser Weg muss keinesfalls "der richtige" und auch schon gar nicht "professionell" sein, aber zumindest bei mir hat es funktioniert, und das ist mir zunächst mal die Hauptsache. Falls es jemand besser kann, und/oder einen offiziellen Patch oder ein offizielles Paket für Delphi 10.4 veröffentlichen kann, wäre ich natürlich enorm dankbar.
Folgendes muss per Hand gepatcht werden:
Code:
File: jwa\branches\2.3\Win32API\JwaWinType.pas
copy 6
add 1
{$DEFINE USE_DELPHI_TYPES}
copy 6
File: jwa\branches\2.3\Win32API\JwaWinCrypt.pas
copy 6
add 1
{$DEFINE USE_DELPHI_TYPES}
copy 6
File:
jwscl\branches\0.9.3\source\JwsclLsa.pas
copy 6
replace 1
property LsaHandle: THandle Read fLsaHandle;
copy 6
File:
jwscl\branches\0.9.3\source\JwsclSecurityDialogs.pas
copy 6
replace 1
MergedSD.OwnDACL := false;
copy 1
add 1
MergedSD.OwnDACL := true;
copy 6
File:
jwscl\branches\0.9.3\source\JwsclToken.pas
copy 6
replace 1
Handle : THandle;
copy 6
File:
jwscl\branches\0.9.3\source\JwsclTypes.pas
copy 6
replace 1
TJwTokenHandle = THandle;
copy 3
replace 1
TJwThreadHandle = THandle;
copy 1
replace 1
TJwProcessHandle = THandle;
copy 6
Zusammengefasst:
1) Dort, wo der Compiler meckert muss der Typ der Variable (meistens eine Variabel mit "
Handle" im Namen) von Cardinal auf THandle geändert werden.
2) Zwei Dateien benötigen noch den Hinweis "{$DEFINE USE_DELPHI_TYPES}"
3) MergedSD.OwnDACL := true; da sonst nach dem Schließen jedes Sicherheitsdialogs das Programm abstürzt
Ich hoffe, ich konnte hiermit beitragen, das Projekt noch einige Jahre länger verwendbar zu halten.
Konstruktive Kritik ist gerne gesehen, Fragen zu dem Thema werde ich versuchen zu beantworten...
Delphi 10.4 32-Bit auf Windows 10 Pro 64-Bit, ehem. Delphi 2010 32-Bit auf Windows 10 Pro 64-Bit