Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TPLockBox Funktionsaufruf -> Fenster wird weiß?! (https://www.delphipraxis.net/90565-tplockbox-funktionsaufruf-fenster-wird-weiss.html)

trashcandesign 19. Apr 2007 16:26


TPLockBox Funktionsaufruf -> Fenster wird weiß?!
 
Liste der Anhänge anzeigen (Anzahl: 2)
Moin,

Ich habe ein ZipFile, in dem eine verschlüsselte Datei ist.

Nun soll in einer Funktion die Datei entpackt und der Inhalt entschlüsselt werden.
Das ganze gebe ich in einem Memo-Feld aus (Screen1).

Die Funktion, die das ganze ausführt ruft dann eine zweite Funktion auf (DecodeFile), die wiederum den Inhalt entschlüsselt.
Diese Funktion sieht wie folgt aus:

Delphi-Quellcode:
function DecodeFile(Datei, PW: string): Boolean;
var
  Rijndael                 : TlbRijndael;
begin

    if FileExists(Datei) then DeleteFile(Datei);

    Rijndael           := TlbRijndael.Create(nil);
    Rijndael.GenerateKey(UpperCase(PW));

    Rijndael.DecryptFile(Datei, 'Foo.Bar');

    Rijndael.Free;

end;
Sobald ich nun
Delphi-Quellcode:
Rijndael.DecryptFile(Datei, 'Foo.Bar');
aufrufe wird das Fenster weiß (Screen2) und wird erst, nachdem alles vorbei ist wieder angezeigt.

Ich habe die Entpack-Funktion schon in einen eigenen Thread ausgelagert, das Memo und das Fenster mit repaint neu zeichnen lassen und und und.... aber ich komm einfach nicht weiter!

Hat jemand von euch eine Idee, woran das liegen könnte und wie man das lösen kann? :gruebel:


Gruß
Dirk

mkinzler 19. Apr 2007 16:29

Re: TPLockBox Funktionsaufruf -> Fenster wird weiß?!
 
Ei Repaint allein reicht oft nicht. Gib Rechenzeit mit
Delphi-Quellcode:
Application.ProcessMessages;
ab.

trashcandesign 19. Apr 2007 16:32

Re: TPLockBox Funktionsaufruf -> Fenster wird weiß?!
 
Klasse,

das Fenster wird zwar immernoch weiß, aber sobald ich das ProcessMessages aufrufe wird wenigstens wieder alles angezeigt!


Danke dir für die schnelle Hilfe...

SirThornberry 19. Apr 2007 17:06

Re: TPLockBox Funktionsaufruf -> Fenster wird weiß?!
 
obwohl du das ganze in einen Thread auslagerst hängt die Anwendung und das Fenster wird weiß? kannst du den Quelltext mal zeigen? Wenn du wirklich das ganze in dem Thread machst dürfte das nicht der Fall sein.

trashcandesign 20. Apr 2007 09:01

Re: TPLockBox Funktionsaufruf -> Fenster wird weiß?!
 
Hier der Quelltext:


Delphi-Quellcode:
[...]

type
  TDecodeThread = class(TThread)
  private
    { Private-Deklarationen }
  public
    FFilename: string;
    FPW: string;
  function DecodeFile(sFileName, sPassword: string): Boolean;
  protected
    procedure Execute; override;
  end;

[...]

implementation
[...]



procedure TDlgDatenTransferIntern.MPFeuerImport;
var
  DThread              : TDecodeThread;
  sPassword, sFilename : string;

  [...]
begin
  [...]

  //Thread aufruf
  DThread                := TDecodeThread.Create(True);
  DThread.Priority       := tpNormal;
  DThread.FreeOnTerminate := True;
  DThread.FFilename      := sFilename;
  DThread.FPW            := sPassword;
  DThread.Resume;

  WaitForSingleObject(DThread.Handle, INFINITE);

  [...]
end;

function TDecodeThread.DecodeFile(sFileName, sPassword: string): Boolean;
var
  Blowfish                 : TlbBlowfish;
begin

    if FileExists(COPY(sFileName, 1, Length(sFileName)-4)+'.FDB') then
      DeleteFile(COPY(sFileName, 1, Length(sFileName)-4)+'.FDB');


    Blowfish           := TlbBlowfish.Create(nil);

    Blowfish.GenerateKey(UpperCase(sPassword));

    Blowfish.DecryptFile(COPY(sFileName, 1, Length(sFileName)-4)+'.BLF', COPY(sFileName, 1, Length(sFileName)-4)+'.FDB');

    Blowfish.Free;

end;


procedure TDecodeThread.Execute;
var
  HashDecodedFile: string;
begin
  if not DecodeFile(FFilename, FPW) then
    Messagebox(Handle, 'Fehler beim Entschlüsseln der Datei.',
      'Datei entschlüsseln', MB_ICONSTOP);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz