So ich habe es jetzt geschaft, aber nicht so richtig. Ich benutze jetzt ein TThread-Objekt.
Delphi-Quellcode:
procedure BlowFishThread.EncryptBlowFish;
var
BlowFish: TCipherManager;
begin
BlowFish := TCiphermanager.Create(nil);
with BlowFish do
begin
try
Algorithm := 'Blowfish';
InitKey(FPW, nil);
OnProgress := Progress;
EncodeFile(FFilename, FFilename + '.encoded');
except
BlowFish.Free;
FPosition := -1;
exit;
end;
end;
BlowFish.Free;
end;
procedure BlowFishThread.Progress;
begin
FPosition := Trunc(100 / Maximal * Current);
Synchronize(UpLV);
end;
procedure BlowFishThread.Execute;
var
Header: TFileHeader;
begin
EncryptBlowFish;
with Header do
begin
HeaderSize := sizeof(TFileHeader);
sVersion := VER;
sAlgo := ALGO_BLOWFISH;
KeySize := 0;
end;
Addheader(Header, Filename + '.encoded');
end;
procedure BlowFishThread.UPLV;
begin
Form1.UpLV(FIndex, FPosition);
end;
Allerdings zählt er nur die letzte Datei hoch.