Einzelnen Beitrag anzeigen

neubert

Registriert seit: 17. Okt 2012
32 Beiträge
 
#38

AW: Negative Erfahrungen mit Delphi 10.4 CE

  Alt 3. Jan 2022, 19:05
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.
Miniaturansicht angehängter Grafiken
callstack.png  
  Mit Zitat antworten Zitat