So, ich habe an Silvester das "Schnäppchen"-Angebot wahrgenommen und bin jetzt Besitzer einer Lizenz für Delphi 11 Pro.
Die letzten Tage habe ich darauf verwendet, meine brandneue virtuelle Maschine für Delphi 11 mit allen netten Tools zu versehen, die ich für die Entwicklung brauche, die verwendeten Drittanbieter-Bibliotheken zu installieren, und mein Projekt nach Delphi 11 zu portieren.
Ergebnis:
- Der in 10.3 funktionierende Bootstrapping-Mechanismus funktioniert auch in Delphi 11 nicht mehr. Sobald mit LoadModule() das
Package mit dem Splash-Screen (
Vcl.TForm) geladen wird, schießt sich die Anwendung ins Nirwana (siehe Screenshot). Das ist mit 10.4 genauso.
- Der neue Lademechanismus landet auch wieder nur auf einem Nicht-Benutzer-Haltepunkt bei $0019FE95, wenn ein bestimmtes
BPL (bnLib280.bpl) geladen wird. Danach ist dann auch irgendwie der Compiler kaputt, denn es gibt interne Fehler, wenn ich nochmal kompilieren will. Irgendwie habe ich ein Händchen dafür, Wege zu wählen, die ins Aus führen. Ich bin mir sehr sicher, dass es damit zu tun hat, dass ich BPLs lade. Der Code zu Anschauungszwecken unten.
Jedenfalls habe ich jetzt eine ewige Lizenz für Delphi 10.3 und kann erstmal damit in Ruhe weiterentwickeln.
Was ich "eigentlich" erreichen will, versuche ich nun gelegentlich auf die Delphi-Art in Delphi 11 zu lösen mit automatischem Laden der BPLs.
Vielen Dank an Alle für die rege Anteilnahme und die Tipps. Es war auch das eine oder andere dabei, was mich anderweitig weitergebracht hat.
Viele Grüße
Boris
Delphi-Quellcode:
program AGS;
uses
Vcl.Forms,
System.SysUtils,
SplashUI
in '
..\..\src\exe\AGS\Splash\SplashUI.pas',
MainUI
in '
..\..\src\exe\AGS\Main\MainUI.pas'
{MainForm},
LibraryTracker
in '
..\..\src\exe\AGS\Main\LibraryTracker.pas';
{$R *.res}
procedure LoadBpl(
const Folder, Basename:
string);
var
Path:
string;
begin
Path := IncludeTrailingPathDelimiter(Folder) + Basename;
if LoadPackage(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) +
'
lib\' + Path + '
.bpl') = 0
then
raise Exception.Create('
could not load package ' + Path);
end;
begin
InitializeLibraryTracker;
SplashForm := TSplashForm.Create(Application);
try
SplashForm.Show;
// SplashForm.Refresh;
// AGS Framework
LoadBpl('
AGS', '
bnProfiler280');
LoadBpl('
AGS', '
bnBase280');
LoadBpl('
AGS', '
bnMail280');
LoadBpl('
AGS', '
bnMessageService280');
LoadBpl('
AGS', '
bnLib280');
// <-- hier knallt es
Application.Initialize;
// Application.CreateForm(TMainForm, MainForm);
finally
SplashForm.CanClose := True;
end;
Application.Run;
FinalizeLibraryTracker;
end.