Woher hast du denn das!??
Hast es gescannt? "L"="I"="1"...
1.
Sehr merkwürdig programmiert mit dem
s : string[255];
c : array[0..255] of byte absolute s;
und später wird trotzdem mit ord(s[i]) drauf zugegriffen?
Es wäre ja sowieso "c : array[0..256] of byte absolute s;". Aber du kannst dir das sparen, denn: c[...] = ord(s[...]) = byte(s[...])
2.
ord(s[0]) ist veraltet (macht auch semantisch wenig Sinn). Man sollte length(s) schreiben.
3.
Dein "Randomize;" macht dein "randseed := code;" kaputt.
Naja, hier ist's auf jeden Fall korrigiert:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| const code = 3; var superkey : array[0..255] of byte;
procedure TForm1.FormCreate(Sender: TObject); var i : Integer; begin randSeed := code; Button1.Caption := 'Codieren'; for i := 0 to high(superkey) do superkey[i] := random(256); end;
procedure TForm1.Button1Click(Sender: TObject); var s : string; i : Integer; begin If Button1.Caption = 'Codieren' then begin s := Memo1.Text; for i := 1 to length(s) do s[i] := char(superkey[(i-1) mod length(superkey)] xor byte(s[i])); Button1.Caption := 'Decodieren'; Label1.Caption := s; Memo1.Text := ''; end else begin s := Label1.Caption; For i := 1 to length(s) do s[i] := char(superkey[(i-1) mod length(superkey)] xor byte(s[i])); Button1.Caption := 'Codieren'; Memo1.Text := s; label1.Caption := ''; end; end; |
// Edit: hab noch das mod noch ins superkey[] reingetan, um überläufe zu verhindern.