Moin...
ein funktionierendes Beispiel:
Delphi-Quellcode:
function TGhostscript.PDFShrink(FileName: string): Boolean;
var
TargetFileName: string;
InitError: Integer;
begin
if FDLLHandle = 0 then
begin
if not LoadDLL(FDLLPath) then
begin
Result := False;
Exit;
end;
end;
try
TargetFileName := IncludeTrailingPathDelimiter(ExtractFilePath(FileName)) + conFileNameTempPDF;
SetLength(FParameters, 7);
FParameters[0] := '';
FParameters[1] := '-dNOPAUSE';
FParameters[2] := '-dBATCH';
FParameters[3] := '-dPDFSETTINGS=/ebook';
FParameters[4] := '-sDEVICE=pdfwrite';
FParameters[5] := PAnsiChar(AnsiString('-sOutputFile=' + TargetFileName));
FParameters[6] := PAnsiChar(AnsiString(FileName));
InitError := FGsApiInitWithArgs(FGsInstance, Length(FParameters), FParameters);
Result := (InitError = 0);
if InitError <> 0 then
begin
if Assigned(FOnError) then
begin
FOnError(Self, Format('Fehlercode: %d', [InitError]));
end;
end;
finally
FGsApiExit(FGsInstance);
end;
if Result then
begin
if not TToolsIO.IsFileInUse(FileName) then
begin
try
TFile.Delete(FileName);
if not TToolsIO.IsFileInUse(FileName) then
begin
if not RenameFile(TargetFileName, FileName) then
begin
if Assigned(FOnError) then
begin
FOnError(Self, Format('Fehler beim Umbenennen von TempPDF.pdf: %s', ['Rename']));
end;
end;
end
else
begin
if Assigned(FOnError) then
begin
FOnError(Self, Format('Fehler beim Umbenennen von TempPDF.pdf: %s', ['InUse']));
end;
end;
except
if Assigned(FOnError) then
begin
FOnError(Self, Format('Fehler beim Umbenennen von TempPDF.pdf: %s', ['Delete']));
end;
end;
end
else
begin
if Assigned(FOnError) then
begin
FOnError(Self, Format('Fehler beim Umbenennen von TempPDF.pdf (in Benutzung): %s', [FileName]));
end;
end;
end;
end;
PS:
So eine Funktion gehört nicht auf die Form sondern in eine seperate
Unit / Klasse. Dieser Klasse übergiebst du dann die Dateien...