Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#6

AW: GhostScript: Zugriffsverletzung

  Alt 6. Jul 2020, 12:55

Zitat:
Japp, es genügt ja, wenn Du Fehler/unerwartete Rückgaben loggst.
...jetzt logge ich alle Rückgaben. Wenn LoadDLL fehlschlägt wird nicht mehr "verkleinert"
Zitat:
würde ich mal grundsätzlich einIf FileExists(CurrentDLLPath) then
...erledigt.
Delphi-Quellcode:
function TGhostscript.LoadDLL(PathDLL: string): Boolean;
var
  CurrentDLLPath: string;
begin
  if PathDLL = 'then
  begin
    CurrentDLLPath := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + conDLLName;
  end
  else
  begin
    CurrentDLLPath := PathDLL;
  end;

  if TFile.Exists(CurrentDLLPath) then
  begin
    FDLLHandle := LoadLibrary(PChar(CurrentDLLPath));
  end;

  if FDLLHandle > 0 then
  begin
    FGsInit := GetProcAddress(FDLLHandle, 'gsapi_new_instance');
    Result := (FGsInit(@FGsInstance, nil) = 0);
    if Result then
    begin
      FGsApiInitWithArgs := GetProcAddress(FDLLHandle, 'gsapi_init_with_args');
      if not Assigned(FGsApiInitWithArgs) then
      begin
        FOnError(Self, 'GsApiInitWithArgs konnte nicht ermittelt werden.');
        FLog.Log('GsApiInitWithArgs konnte nicht ermittelt werden');
        Result := False;
      end;
      FGsApiExit := GetProcAddress(FDLLHandle, 'gsapi_exit');
      if not Assigned(FGsApiExit) then
      begin
        FOnError(Self, 'GsApiExit konnte nicht ermittelt werden.');
        FLog.Log('GsApiExit konnte nicht ermittelt werden');
        Result := False;
      end;
      FGsApiDeleteInstance := GetProcAddress(FDLLHandle, 'gsapi_delete_instance');
      if not Assigned(FGsApiDeleteInstance) then
      begin
        FOnError(Self, 'GsApiDeleteInstance konnte nicht ermittelt werden.');
        FLog.Log('GsApiDeleteInstance konnte nicht ermittelt werden');
        Result := False;
      end;
    end
    else
    begin
      FOnError(Self, 'Die Ghostscript Instanz konnte nicht erzeugt werden.');
      FLog.Log('Die Ghostscript Instanz konnte nicht erzeugt werden.');
      Result := False;
    end;
  end
  else
  begin
    FOnError(Self, Format('Die Ghostscript DLL %s wurde nicht geladen.', [QuotedStr(CurrentDLLPath)]));
    FLog.Log('Die Ghostscript DLL wurde nicht geladen');
    Result := False;
  end;
end;
Danke erstmal...

Geändert von haentschman ( 6. Jul 2020 um 13:05 Uhr)
  Mit Zitat antworten Zitat