Einzelnen Beitrag anzeigen

CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Programm nicht mehr ansprechbar

  Alt 20. Jun 2003, 16:49
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
  Mit Zitat antworten Zitat