this slowpoke moves

Crypt & Decrypt File with Progress Callback

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

Beliebte Posts

Translate