mmmmmhhhh.... weiß nicht so recht:
Delphi-Quellcode:
if TFile.Exists(CurrentDLLPath) then
begin
FDLLHandle := LoadLibrary(PChar(CurrentDLLPath));
end;
if FDLLHandle > 0 then
Wat iss denne, wenn FDLLHandle
vor dem
if TFile.Exists(CurrentDLLPath) then
'nen Wert > 0 hat?
Von mir aus sowas:
Delphi-Quellcode:
if not TFile.Exists(CurrentDLLPath) then begin
// Fehlerloggen
Result := false;
exit;
end;
aber keinerfalls bei fehlender
DLL noch irgendwas in der Routine machen außer Result := false;
Eventuell noch hinter das erste Begin am Anfang der Routine ein
Result := False;
als grundsätzlich erstmal festgelegter Rückgabewert der Funktion, der nur bei Erfolg auf true geändert wird.
Delphi-Quellcode:
function TGhostscript.LoadDLL(PathDLL:
string): Boolean;
var
CurrentDLLPath:
string;
begin
Result := false;
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));
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
else
begin
FOnError(Self, Format('
Die Ghostscript DLL %s wurde nicht gefunden.', [QuotedStr(CurrentDLLPath)]));
FLog.Log('
Die Ghostscript DLL wurde nicht gefunden.');
Result := False;
end;
end;