Einzelnen Beitrag anzeigen

IMPEGA

Registriert seit: 19. Jan 2008
Ort: Brhv
83 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: DCPCrypt Datei zeilenweise verschlüsseln.

  Alt 19. Jun 2014, 19:43
Danke erst Mal für die schnelle Antwort.
So kann ich sehr gut lernen.

Zuerst ein Lob auf deine Art Dinger zu erklären. So verstehe ich es am besten.
Vielen dank dafür.

Ich bin leider kein begabter Coder. Versuche aber mein bestes zu geben.
Liste := TStringlist.Create; // das gehört vor das TRY !!!
Das ist mir aber klar, war ein versehen.

Ich habe nur das relevante zusammen kopiert. Eben beim kopieren übersehen.
Genauso wie except. Ich fange Fehler schon auf, habe es aber für unwichtig gehalten bei der Frage.

ListeCR brauche ich nicht, habe aber gedacht dass mein Ergebnis dadurch verfälscht wird.
Ich habe einiges probiert bis ich mich erst entschlossen habe zu fragen.
So oft Sachen probiert dass ich zum Schluss ganz durcheinander war.

Das aber: Cipher.Burn; // das davor
Ehrlich gesagt habe ich gedacht es gehört nach finally. Schon wieder was gelernt.

Der eigentlicher fahren liegt aber bei der Cipher.InitStr(.......
Das kommt von Unwissenheit.

Hier mein Code was nun funktioniert. Für meine Zwecke vollkommen ausreichend.
Delphi-Quellcode:
procedure TForm1.ButtonDCPEncryptClick(Sender: TObject);
var
  Cipher : TDCP_Cipher;
  DateiName : string;
  Liste : TStringList;
  index : Integer;
begin
  if EditDatei.Text = 'then
    begin
      MessageBox(0, 'Zuerst eine Datei wählen.' ,'Hinweis !' ,MB_ICONWARNING);
      exit;
    end;
  Liste := TStringlist.Create;
    try
      DateiName := ExtractFileName(EditDatei.Text);
      SaveDialog1.Filename := DateiName;
      SaveDialog1.Filter := 'Alle-Dateien|*.*;';
      SaveDialog1.InitialDir := ExtractFilePath(Application.ExeName);
        if SaveDialog1.Execute then
          begin
            Liste.BeginUpdate;
            Liste.LoadFromFile(DateiName);
            Liste.EndUpdate;

            Cipher := TDCP_rijndael.Create(Self);
              try
                try
                  for Index := 0 to Liste.Count - 1 do
                    begin
                      Cipher.InitStr(EditPasswort.Text,TDCP_sha1);
                      Liste.Strings[Index] := Cipher.EncryptString(Liste.Strings[Index]);
                      Cipher.Burn;
                    end;
                except
                  on E:Exception do MessageDlg(E.Message, mtError, [mbOk], 0);
                end;
              finally
                Cipher.Free;
              end;
            Liste.SaveToFile(SaveDialog1.Filename);
          end;
    finally
      Liste.Free;
    end;
  EditDatei.Text := '';
  MessageBox(0, 'DONE' ,'Hinweis !' ,MB_ICONWARNING);
end;
Falls weitere Fehler auftauchen bitte um Korrektur.

Geändert von IMPEGA (19. Jun 2014 um 20:31 Uhr)
  Mit Zitat antworten Zitat