Erstmal danke für die schnelle Antwort!
Ich habe jetzt folgendes versucht:
Delphi-Quellcode:
dateiname:=s.strings[n];
tEncrypt := TEncryptionThread.Create(true);
tEncrypt.Suspended:=True;
tEncrypt.OnFertig:=ThreadFertig;
tEncrypt.Priority := tpNormal;
tEncrypt.FreeOnTerminate := true;
tEncrypt.fInFileName := dateiname;
memo1.lines.add('thread:' +dateiname);
tEncrypt.fPassphrase := g_key;
tEncrypt.Resume;
Delphi-Quellcode:
procedure TEncryptionThread.execute;
var
DCPCipher: TDCP_blowfish;
source, dest: TFileStream;
temp:string;
begin
temp:='_tmp';
RenameFile(fInFileName,fInFileName+temp);
dest := TFileStream.Create(fInFileName, fmCreate);
fInFileName:=fInFileName+temp;
source := TFileStream.Create(fInFileName, fmOpenRead);
DCPCipher := TDCP_blowfish.Create(nil);
DCPCipher.InitStr(fPassphrase, TDCP_sha512);
DCPCipher.EncryptStream(source, dest, source.size);
DCPCipher.Burn;
dest.Free;
source.Free;
DeleteFile(fInFileName);
FreeAndNil(DCPCipher);
if Assigned(OnFertig) then OnFertig(Self);
end;
Delphi-Quellcode:
procedure TfrmMain.ThreadFertig(Sender: TObject);
begin
tEncrypt.terminate;
if tEncrypt.Terminated then begin
inc(x);
ppercent:=Trunc(x/pmax*100);
ProgressBar.Position:=ppercent;
Application.ProcessMessages;
end;
end;
Das scheint so zu funktionieren, nur habe ich jetzt ein anders Problem...
Der letzte Thread wird nicht gestartet. Also wenn ich 12 Threads create läuft er beim 12 Thread nicht mehr in "ThreadFertig" if terminated rein.