Elaborați un program care repetă funcțiile unui notebook standard cu capacitatea suplimentară de criptare și decriptare a datelor.
Fig. 7.1. Meniul programului Notepad Encoder
# 8662; Meniul este discutat în capitolul precedent.
Pentru elementul de meniu Format → Înfășurare cuvânt, setați proprietatea Checked la True, deoarece acest element din meniu va acționa ca un comutator.
Nu este nimic altceva de adăugat la formular, iar rezultatul ar trebui să fie în conformitate cu Fig. 7.2.
Fig. 7.2. Formatul Notepad format
Vom cripta textul folosind funcția xor sau offsetul normal. Pentru ca textele criptate să fie necriptate de șablon, vom solicita utilizatorului să aleagă numărul xor la care ar trebui să fie schimbat simbolul.
Mai întâi, declarați variabila globală xr_num de șir de tip:
Acum să luăm comanda meniului. Handler-ul evenimentului OnClick pentru File → Open:
procedura TForm1.N1Click (expeditor: TObject);
// începeți examinarea din dosarul curent
dacă nu OpenDialog1.Execute apoi ShowMessage ('Fișierul nu a fost selectat!')
alt // încărcați fișierul selectat în Memo
Aici vom deschide o casetă de dialog de prezentare generală și vom cere utilizatorului să selecteze un text sau orice alt fișier. După ce utilizatorul a selectat fișierul, îl încărcăm în programul nostru.
Handler-ul evenimentului OnClick pentru File → Save:
procedura TForm1.N2Click (expeditor: TObject);
SaveDialog1 .InitialDir: = GetCurrentDir;
dacă nu SaveDialog1.Execute apoi ShowMessage ("Fișierul nu este salvat!")
altul // salvați în fișier
Deschideți dialogul de salvare a fișierelor După ce utilizatorul a ales locația de salvare a fișierului, extragem textul din Memo și îl stocăm în dosarul selectat.
Handler-ul evenimentului OnClick pentru File → Exit:
procedura TForm1.N4Click (expeditor: TObject);
Închide; // închideți programul
Handlerul de evenimente OnClick pentru Editare → XOR:
procedura TForm1.XoR1Click (expeditor: TObject);
dacă nu InputQuery ("XOR", "Introdu numărul xor:", xr_num)
Aici afișăm o fereastră pentru selectarea numărului xor. Numărul specificat de utilizator va fi stocat în variabila xr_num.
Handlerul de evenimente OnClick pentru Editare → Criptare / Decodare:
procedura TForm1.N5Click (expeditor: TObject);
xr: șir; // ciphertext
i: întreg; // începe contorul de buclă
pentru i: = 1 până la Lungime (Memo1.Text)
începeți / introduceți // prin fiecare caracter din text
// executa offset-ul specificat de utilizator
xr: = xr + Chr (Ord (Memo1.Text [i]) x sau StrToInt (xr_num));
// înlocuiți textul original cu un cod criptat
Această comandă din meniu criptează textul care se află acum în câmpul Memo. În buclă, toate caracterele sunt sortate și fiecare dintre ele este criptată separat.
Handlerul de evenimente OnClick pentru Editare → Ștergere:
procedura TForm1.N8Click (expeditor: TObject);
Memo1.lines.Clear; // clar Memo
Goliți câmpul Memo din textul conținut în acesta.
Handler-ul evenimentului OnClick pentru Format → Word wrap:
procedura TForm1.N9Click (expeditor: TObject);
dacă N9.Checked apoi // dacă este bifată caseta de selectare
N9. Verificat: = Fals; // debifați caseta de selectare
Afișați bara orizontală de defilare
altceva începe // dacă caseta de selectare nu este selectată
N9.Checked: = Adevărat; // bifați caseta de selectare
// eliminați bara orizontală de defilare
În această comandă din meniu, verificăm ce stare este acum în secțiunea Format → Wrap by words. Dacă este selectată caseta de validare, atunci o reseta și afișăm bara orizontală de defilare. În caz contrar, bifați caseta și scoateți bara orizontală de defilare.
Handler-ul evenimentului OnClick pentru Format → Font:
procedura TForm1.N10Click (expeditor: TObject);
// Definiți toate setările fontului și afișați-le
// în caseta de dialog
FontDialog1.Font.Color: = Memo1.Font.Color; // culoarea fontului
FontDialog1.Font.Style:= Memo1.Font.Style; // stil
FontDialog1.Font.Size: = Memo1.Font.Size; // dimensiune
FontDialog1.Font.Charset: = Memo1.Font.Charset; // codificare
FontDialog1.Font.Name:= Memo1.Font.Name; // numele fontului
dacă FontDialog1.Execute apoi
începeți // aplicați toate setările selectate
Înainte de a deschide caseta de dialog pentru selectarea fontului, definim toate setările curente ale fontului, astfel încât acestea să poată fi afișate în caseta de dialog. După ce utilizatorul a apăsat butonul OK din această fereastră, toate setările de fonturi selectate sunt aplicate câmpului Memo.
Acum rămâne doar să implementăm descărcarea automată a fișierelor asociate cu notepad-ul nostru în manageri de fișiere. Pentru aceasta, creați un handler de evenimente OnCreate pentru formularul principal:
procedura TForm1.FormCreate (expeditor: TObject);
Str: String; // calea spre parametru
xr_num: = '2'; // default offset = 2
dacă (ParamCount> 0) începe apoi
Str: ParamStr (1); // Formați calea argumentului
pentru i: = 2 pentru ParamCount do Str: = Str + '' + ParamStr (i);
dacă Str <> '' apoi Memo1.Lines.LoadFromFile (str);
Aici setăm valoarea inițială pentru offset și verificăm dacă au intrat vreun parametru în intrarea programului. Dacă da, aflăm calea spre fișier și afișăm conținutul său în câmpul Memo. Un exemplu de criptare cu offset 10 este prezentat în Fig. 7.3.
Fig. 7.3. Exemplu de criptare cu offset 10
Codul sursă complet al programului Notepad este prezentat în Lista 7.1.
Listing 7.1. Modul de program Notepad Encoder
Ferestre, Mesaje, SysUtils, Variante, Clase, Grafica, Forme de control, Dialoguri, StdCtrls, Meniuri;
tip TForm1 = clasă (TForm)