Strona g│≤wna

 

Szyfrowanie plik≤w tekstowych

To pojΩcie nie jest skomplikowane tak jak by siΩ to mog│o wydawaµ na pierwszy rzut oka :) ale jest do╢µ czasoch│onne. Wymaga bowiem zaprogramowania ka┐dego znaku. Tj. na jaki znak ma program zmieniaµ np. literkΩ "a". 

Najlepiej na formularzu umie╢µ dwa komponenty typu Memo oraz dwa Buttony. W pierwszym Memo bΩdzie umieszczony tekst do zakodowania, a w drugim zakodowany ju┐ tekst. Jeden przycisk bΩdzie s│u┐y│ do kodowania, a drugi do dekodowania. 

var
  S : String;
  Len : Integer;
  I : Integer;
  Code : String;
begin
  S := Memo1.Lines.Text;
  Len := Length(S);// pobierz d│ugo╢µ tekstu

  for I := 1 to Len do  // pΩtelka
  begin
  { Je┐eli w sk│ad Memo1 wchodzi du┐▒ litera "A" lub ma│▒
    litera "a" to do zmiennej "Code" przypisywany jest znak
    "@", kt≤ry jest znakiem kodowania, kt≤ry odpowiada tej┐e
    literze. }
    if (S[i] = 'A') or (S[i] = 'a') then
      Code := Code + '@';
    if (S[i] = 'B') or (S[i] = 'b') then // j/w
      Code := Code + '^';
    if (S[i] = 'C') or (S[i] = 'c') then  // j/w
      Code := Code + '2';
  end;
  Memo2.Clear; // wyczy╢µ drugie Memo
  Memo2.SelText := Code; // wstaw tekst ze zmiennej "Code"
end;

Procedura nie jest d│uga, ale koduje tylko trzy znaki :) a konkretniej litery a, b, c. W tej procedurze nie bΩd▒ rozpoznawane znaki du┐ej litery, czy ma│ej. P≤╝niej zmiennej "Code" dopisujemy kolejny "skodowany" znak. Na samym koµu Memo2 jest czyszczone i przypisywana jest mu zmienna "Code". Oczywi╢cie w ten spos≤b musisz zaprogramowaµ ka┐dy znak ( m≤wi│em, ┐e to czasoch│onne?! :)). 

No dobra teraz schemat dekodowania, a konkretniej zawarto╢ci Memo2. 

var
  S : String;
  Len : Integer;
  I : Integer;
  Code : String;
begin
  S := Memo2.Lines.Text;
  Len := Length(S);

  for I := 1 to Len do
  begin
    if S[i] = '@' then
      Code := Code + 'a';
    if S[i] = '^' then
      Code := Code + 'b';
    if S[i] = '2' then
      Code := Code + 'c';
  end;
  Memo1.Clear; // czy╢µ
  Memo1.SelText := Code; // przypisz zmienna "Code" do 
 //zawarto╢ci Memo1

end;

Ta procedura jest bardzo podobna do poprzedniej. Dzia│a na tej samej zasadzie co poprzednia. C≤┐ mogΩ jeszcze powiedzieµ? Mo┐e jak zapisaµ tre╢µ Memo do pliku:

var
  TF : TextFile;
begin
  AssignFile(TF, 'C:\plik.txt');
  Rewrite(TF);
  Writeln(TF, Memo1.Lines.Text);
  CloseFile(TF);

Je┐eli chcecie wiedzieµ co╢ wiΩcej o zapisie i odczycie plik≤w przeczytajcie artyku│ "Pliki".  

Na tym ko±czΩ ten kr≤tki artyku│.

Adam Boduch