submenu Save, Save As, Save All, Close, Close All, Close All Except This, Cut, Copy, Paste, dan Select All.
Gambar 4.29 Menu Popup Tab Code Editor
4.2 Kode Program cryptIDE
Code editor pada cryptIDE memanfaatkan komponen TCodeEditor. TCodeEditor diturunkan dari kelas TRichEdit, dengan penambahan beberapa metode dan properti.
Beberapa diantaranya memegang peranan penting pada proses code highlighting.
function TCo deEditor.getlexemestr: string; var pos: TPoint;
checkonly: boolean: string;
Fungsi
getlexeme
merupakan metode pada kelas TCodeEditor yang bertanggung jawab untuk mengembalikan satu buah lexeme berikutnya dari string
masukan
str
dimulai dari posisi
pos
. Selama proses
getlexeme
, posisi
pos
akan ‘digeser’ ke posisi berikutnya sampai dicapai akhir string
str
atau sampai ditemukan akhir dari lexeme. Rincian fungsi
getlexeme
diperlihatkan pada Lampiran A. Proses yang digunakan untuk perolehan lexeme pada code highlighting sedikit berbeda
Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009.
dengan proses pada analisis leksikal. Pada proses perolehan lexeme pada code highlighting, karakter whitespace, karakter khusus, dan komentar tidak dibuang,
melainkan dikembalikan sebagai lexeme.
procedure TC odeEditor.highlightvar pos: TPoint; str: string;
Prosedur
highlight
juga merupakan satu diantara metode kelas TCodeEditor. Prosedur
highlight
melakukan code highlighting satu baris masukan, dengan cara memanggil fungsi
getlexeme
dan melakukan analisis tiap lexeme sampai tidak terdapat lexeme yang bisa dikembalikan oleh fungsi
getlexeme
. Rincian prosedur
highlight
diperlihatkan pada Lampiran B. Cara kerja metode
highlight
adalah mula-mula memeriksa apakah baris masukan
str
merupakan komentar. Jika baris
str
merupakan komentar, maka baris tersebut akan di-highlight dengan font style komentar. Jika bukan, maka proses dilanjutkan dengan memeriksa lexeme yang
dikembalikan dari pemanggilan fungsi
getlexe me
, dan ditentukan jenis lexeme tersebut, apakah merupakan karakter biasa, komentar, kata tercadang, konstanta
bilangan bulat desimal, konstanta bilangan pecahan, konstanta bilangan bulat biner, konstanta bilangan bulat oktal, konstanta bilangan bulat heksadesimal, konstanta
untaian karakter, atau kata biasa.
function Gen erateKeyregNo: Shortstring: Shortstring;
var i: integer; begin
result := ; for i := LengthregNo downto 1 do
result := result + regNo[i]; end;
Fungsi
GenerateKey
merupakan fungsi yang terdapat pada berkas Pcrypt.dll. Fungsi
GenerateKey
digunakan untuk membangkitkan kunci dari data nomor registrasi pengguna.
Algoritma kriptografi yang digunakan adalah algoritma kriptografi klasik Caesar Cipher, dengan pergeseran karakter untuk tiap karakter masukan adalah
sebanyak urutan karakter kunci pada tabel ASCII.
Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009.
function dec riptcipher, key: Shortstring: Shortstring;
var i: integer; begin
result := ; for i := 1 to lengthcipher do
begin if ordcipher[i] ordkey[i mod lengthkey+1] then
result := result + chr256-ordkey[i mod lengthkey+1]- ordcipher[i]
else result := result + chrordcipher[i]-
ordkey[i-1 mod lengthkey+1]; end;
end;
Fungsi
decript
merupakan fungsi yang terdapat pada berkas Pcrypt.dll. Fungsi
decript
digunakan untuk melakukan dekripsi tiap karakter masukan
cipher
dengan kunci
key
.
function enc riptplain, key: Shortstring: Shortstring;
var i: integer; begin
result := ; for i := 1 to lengthplain do
result := result + chrordplain[i]+ ordkey[i-1 mod lengthkey+1]
mod 256; end;
Fungsi
encript
merupakan fungsi yang terdapat pada berkas Pcrypt.dll. Fungsi
encript
digunakan untuk melakukan enkripsi tiap karakter masukan
plain
dengan kunci
key
. Ketika pengguna memilih berkas kode sumber yang akan dibuka, maka
cryptIDE akan memeriksa ekstensi berkas kode sumber tersebut. Jika berkas kode sumber tersebut berekstensi .4esc, maka berkas tersebut merupakan berkas kode
sumber terenkripsi. Kemudian cryptIDE akan memeriksa status registrasi pengguna. Jika pengguna telah melakukan registrasi, maka proses berikutnya adalah membaca
dan melakukan dekripsi tiap baris berkas kode sumber terenkripsi tersebut dengan kunci yang dibangkitkan dari nomor registrasi, dan menampilkannya ke tab page code
editor sampai dicapai akhir dari berkas end of file tersebut. Cuplikan kode program berikut merupakan cuplikan kode program untuk membaca, mendekripsi tiap baris
Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009.
berkas kode sumber terenkripsi dan kemudian menampilkannya ke tab page code editor.
... AssignFilef, Ta
b.path; resetf;
while noteoff do begin
readlnf, temp; if reged then
Tab.codeedtr.Lines.Adddecripttemp, GenKeyregNo else
Tab.codeedtr.Lines.Addtemp; end;
...
Ketika pengguna akan menyimpan suatu berkas kode sumber tab page dengan suatu nama berkas, maka cryptIDE akan memeriksa ekstensi nama berkas
kode sumber tersebut untuk menentukan jenis berkas kode sumber tersebut. Jika nama berkas kode sumber tersebut berekstensi .4esc, maka berkas tersebut merupakan
berkas kode sumber terenkripsi. Kemudian cryptIDE akan memeriksa status registrasi pengguna. Jika pengguna telah melakukan registrasi, maka proses berikutnya adalah
membaca dan melakukan enkripsi tiap baris berkas kode sumber tab page tersebut dengan kunci yang dibangkitkan dari nomor registrasi, dan kemudian menuliskannya
ke berkas sampai dicapai akhir baris berkas tab page tersebut. Cuplikan kode program berikut merupakan cuplikan kode program untuk membaca, mengenkripsi tiap baris
berkas kode sumber tab page dan kemudian menuliskannya ke dalam berkas kode sumber.
... AssignFilef, Sa
veDialogSource.FileName; rewritef;
temp := GenKeyregNo; for i := 0 to
TCodeEditorPgCtrlSource.Pages[ix].Components[0].Lines.Count-1 do writelnf,
encriptTCodeEditorPgCtrlSource.Pages[ix].Components[0].Lines[i], temp;
CloseFilef; ...
Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009.
4.3 Pembahasan cryptIDE