Hi,
ich programmiere ja derzeit an meinem "DreamCatcher" (siehe Freeware-Section). Leider ist das Programm während dem codieren nicht mehr ansprechbar. Ich habe den Aufruf in einen Thrad ausgelagert (keine Ahnung, ob das was bewirkt). Folgende Source:
Delphi-Quellcode:
TEncryptionThread = class(TThread)
public
fInFileName: string;
fOutFileName: string;
fPassphrase: string;
protected
procedure execute; override;
end;
procedure TEncryptionThread.execute;
var
DCPCipher: TDCP_blowfish;
source, dest: TFileStream;
begin
source := TFileStream.Create(fInFileName, fmOpenRead);
dest := TFileStream.Create(fOutFileName, fmCreate);
DCPCipher := TDCP_blowfish.Create(nil);
DCPCipher.InitStr(fPassphrase, TDCP_sha1);
DCPCipher.EncryptStream(source, dest, source.size);
DCPCipher.Burn;
dest.Free;
source.Free;
FreeAndNil(DCPCipher);
end;
Folgendermaßen rufe ich das ganze auf:
Delphi-Quellcode:
var
tEncrypt: TEncryptionThread;
// ...
tEncrypt := TEncryptionThread.Create(true);
tEncrypt.Priority := tpIdle;
tEncrypt.FreeOnTerminate := true;
tEncrypt.fInFileName := EncryptInputFile.FileName;
tEncrypt.fOutFileName := EncryptOutputFile.FileName;
tEncrypt.fPassphrase := repeatPass;
ProgressForm.Show;
ProgressForm.ProgressBar1.Min := 0;
ProgressForm.ProgressBar1.Max := GetFileSize(EncryptInputFile.FileName).QuadPart;
ProgressForm.AsFileName := EncryptOutputFile.FileName;
ProgressForm.Timer1.Enabled := true;
tEncrypt.execute;
ProgressForm.Timer1.Enabled := false;
ProgressForm.Close;
MessageDlg('File successfull encrypted.', mtInformation, [mbOK], 0);
Da drin steckt auch ein anderes Problem: nach dem anzeigen des ProgressForm wird das Form angezeigt, allerdings weder neugezeichnet noch komplett gezeichnet (ähnlich wie beim Hauptfenster).
Habt ihr dafür eine Lösung/Idee wie man das ganze einigermaßen normalisieren kann?
Chris