Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.427 Beiträge
 
Delphi 7 Professional
 
#2

AW: Seit Delphi 10.4 crasht mein Programm bei LoadPackage ohne verwertbaren Hinweis

  Alt 2. Nov 2021, 17:49
Versuch bitte mal etwas in dieser Art:
Delphi-Quellcode:
// Die Umgebungsvariabel Path um unser eigenes Suchverzeichnis erweitern.
function AddDllDirectoryToPath(ADirectory : String) : Boolean;
var
  sPath : String;
begin
  sPath := GetEnvironmentVariable('PATH');
  if Pos(ADirectory,sPath) = 0 then sPath := Format('%s;%s',[ADirectory,sPath]);
  SetEnvironmentVariable('PATH', PChar(sPath));
  sPath := GetEnvironmentVariable('PATH');
  // Sofern das Verzeichnis ADirectory noch nicht in der Pfadangabe enthalten war,
  // sollte es nun an der ersten Stelle des Suchpfades stehen.
  ShowMessage(sPath); // <-- das ShowMessage kann im Programmablauf natürlich verschwinden ;-)
  Result := Pos(ADirectory,sPath) <> 0;
end;


const
  csLibDir = 'C:\PfadZuDenLibs\';

begin
  if not AddDllDirectoryToPath(csLibDir) then
  begin
    // Fehlerbehandlung, Programmabbruch ... oder ... oder ... oder ...
  end;
end;
Diesen Teil bitte "irgendwo" vor dem ersten Laden von Packages ... im Programm einbauen.

Sinn: Eventuell werden die Packages ... nicht gefunden. Im Programmablauf werden DLL's ... zuerst im Exe-Verzeichnis gesucht. Sind sie dort nicht zu finden, wird die Umgebungsvariabel Path "abgegrast", bis was gefunden wurde. Wird nix gefunden, gibt es eine Fehlermeldung (hoffentlich).
Wenn die Packages im Exe-Verzeichnis liegen, scheint diese Logik ja zu funktionieren. Es könnte sich beim Beschriebenen also um ein Problem bei der Suche nach Packages ... handeln.
Sollten über die PATH-Variabel jetzt zufällig noch ältere Versionen der Packages zu finden sein, könnte auch dies ein möglicher Grund für das beschriebene Problem sein. (Bitte vorsichtshalber mal überprüfen, nicht nur in Bezug auf Deine eigenen Sachen, sondern bei Indy z. B. auch nach den Packages, die von den Indy-Packages aufgerufen werden könnten.)

Und nein, das muss jetzt keine Lösung des Problemes sein, aber eventuell hilft es ja bei der weiteren Ursachenforschung.
  Mit Zitat antworten Zitat