zu den threads:
ich hatte das problem bei meinem "AlphaCode Crypter" auch. Ich hab es folgendermaßen gelöst:
Deklaration des Threads
Delphi-Quellcode:
type
TCryptThread = class(TThread)
private
Mode: Boolean;
OverwriteFiles: Boolean;
Source, Target: String;
P1,P2: String;
protected
procedure Execute; override;
public
constructor Create(bMode, bOverwriteFiles: Boolean; strSource, strTarget, PW1, PW2: String);
end;
Implementierung
Delphi-Quellcode:
///////////////////
constructor TCryptThread.Create(bMode, bOverwriteFiles: Boolean; strSource, strTarget, PW1, PW2: String);
begin
Mode := bMode;
OverwriteFiles := bOverwriteFiles;
Source := strSource;
Target := strTarget;
P1 := PW1;
P2 := PW2;
FreeOnTerminate := True;
inherited Create(False);
end;
procedure TCryptThread.Execute;
begin
// Hier kommt der Code des Ver- und Entschlüsselns hin!
end;
Aufruf des Threads:
Delphi-Quellcode:
var
CryptThread: TCryptThread
// .....
CryptThread := TCryptThread.Create(rbEnCrypt.Checked,cbOverwriteTarget.Checked,edSource.Text,edTarget.Text,P1,P2);
CryptThread.OnTerminate := ThreadDone;
Prozedur ThreadDone
Delphi-Quellcode:
procedure TfrmMain.ThreadDone(Sender: Tobject);
begin
// Die ganzen Buttons wiede Enablen ;-)
end;
Thread Abbrechen
Delphi-Quellcode:
TerminateThread(CryptThread.Handle,0);
if Application.MessageBox('Der Vorgang wurde abgebrochen! Möchten Sie die unvollständige Zieldatei löschen?','Warnung',48+4) = IDYES then
DeleteFile(edTarget.Text);
ThreadDone(Sender);
Exit;
Ich verwende TerminateThread, da mir auch net der Source der
DCU vorliegt und die ganze Prozedur bei der Methode "Encrypt" sozugagen "anhält" und solange reagiert das Programm halt net.
ich hoffe, das hilft dir!
Super Programm übrigens
mfG
mirage228
David F.