AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TPLockBox Funktionsaufruf -> Fenster wird weiß?!
Thema durchsuchen
Ansicht
Themen-Optionen

TPLockBox Funktionsaufruf -> Fenster wird weiß?!

Ein Thema von trashcandesign · begonnen am 19. Apr 2007 · letzter Beitrag vom 20. Apr 2007
Antwort Antwort
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#1

TPLockBox Funktionsaufruf -> Fenster wird weiß?!

  Alt 19. Apr 2007, 15:26
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
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?


Gruß
Dirk
Miniaturansicht angehängter Grafiken
screen2_125.jpg   screen1_215.jpg  
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 19. Apr 2007, 15:29
Ei Repaint allein reicht oft nicht. Gib Rechenzeit mit Application.ProcessMessages; ab.
Markus Kinzler
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#3

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

  Alt 19. Apr 2007, 15:32
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...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

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

  Alt 19. Apr 2007, 16:06
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#5

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

  Alt 20. Apr 2007, 08:01
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;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz