Dieses Beispiel zeigt, wie man ohne großen Aufwand einen Progress Callback für das Crypten & Decrypten nutzen kann, unabhängig davon, wie groß oder welche Datei verschlüsselt wird.
Das Gute an diesem Beispiel ist, dass der Callback Progress auch für andere Codes implementiert werden kann.
Es wird benötigt : 2xRadioButton, 1xGauge, 1xButton
uses Gauges
procedure TForm1.Button1Click(Sender: TObject);
var
filetoopen , filetowriteto : string;
file1 , file2 : tfilestream;
buff , readbuff : char;
dummy1 , dumm2 : integer;
begin
OpenDialog1.Filter := 'All files|*.*';
if RadioButton1.Checked = true then // Encrypt
Gauge1.Progress := 0
else
Gauge1.Progress := Gauge1.MaxValue;
if OpenDialog1.Execute then
begin
filetoopen := OpenDialog1.FileName;
SaveDialog1.Filter :='All Files|*.*';
if SaveDialog1.Execute then
begin
filetowriteto := SaveDialog1.FileName;
file1 := Tfilestream.Create(filetoopen,fmopenread);
file2 := Tfilestream.Create(filetowriteto,
fmopenwrite or fmcreate or fmsharedenywrite);
Gauge1.MaxValue := file1.Size;
for dummy1 := 0 to file1.Size -1 do
begin
file1.Read(buff,sizeof(buff));
if RadioButton1.Checked = true then
readbuff := char(pchar(buff)+ $20)
else
readbuff := char(pchar(buff) - $20);
file2.Write(readbuff, sizeof(readbuff));
if RadioButton1.Checked = true then
Gauge1.Progress := Gauge1.Progress + 1
else
Gauge1.Progress := Gauge1.Progress -1;
end;
end;
file1.Free;
file2.Free;
end;
end;
Keine Kommentare:
Kommentar veröffentlichen