LAMPIRAN Listing Program

Similar documents
2. Design and Development

LAMPIRAN A: LIST PROGRAM

NATIONAL SENIOR CERTIFICATE GRADE12

LAMPIRAN A LISTING PROGRAM

GRADE/GRAAD 11 NOVEMBER 2013 INFORMATION TECHNOLOGY P1 INLIGTINGSTEGNOLOGIE V1 MEMORANDUM

NATIONAL SENIOR CERTIFICATE GRADE12

Source code for simulations: 1 of 11

GRADE 12 SEPTEMBER 2012 INFORMATION TECHNOLOGY P1 MEMORANDUM

LAMPIRAN. uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, XPMan, ExtCtrls, jpeg;

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ImgList, StdCtrls, Buttons, MPlayer;

APPLICATION NOTE: KONSTANTER LSP32K Interface Protocol

Использование ассиметричных алгоритмов криптографического преобразования информации в приложениях Windows

unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

NATIONAL SENIOR CERTIFICATE GRADE12

Delphi Generics.Collections

Image. uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls ;

NATIONAL SENIOR CERTIFICATE GRADE 12

UJIAN AKHIR SEMESTER TEKNIK INFORMATIKA SEKOLAH TINGGI TEKNOLOGI DUTA BANGSA

LAMPIRAN 1 TATA CARA PENGGUNAAN SOFTWARE ALGORITMA GENETIKA

LAMPIRAN A. Foto Alat

Interdisciplinary relations in teaching of programming

LAMPIRAN A. Listing Program. Program pada Borland Delphi 7.0 A-1 Program pada CodeVisionAVR C Compiler A-6

NATIONAL SENIOR CERTIFICATE GRADE12

NATIONAL SENIOR CERTIFICATE GRADE 12

DELPHI FOR ELECTRONIC ENGINEERS. Part 2 Programming a calculator COURSE

&'()*+,-./0&(1& $ :;

NATIONAL SENIOR CERTIFICATE GRADE12

GRADE 11 NOVEMBER 2012 INFORMATION TECHNOLOGY P1 INLIGTINGSTEGNOLOGIE V1 MEMORANDUM

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

The scripting system handles two types of components: Visual and Non-visual components.

(1) Trump (1) Trump (2) (1) Trump ExampleU ExampleP (2) Caption. TrumpU (2) Caption. (3) Image FormTrump. Top 0 Left 0.

Introduction to the DLL for the USB Interface Board K8061

NATIONAL SENIOR CERTIFICATE GRADE 12

Listing Program Tugas Akhir (TugasAkhir.dpr)

NATIONAL SENIOR CERTIFICATE GRADE 12

Windows. mine sweeper Jirai JiraiU.pas JiraiP.dpr. Form Name FormJirai Caption Position podesktopcenter 16.3

Kada se pokrene forma da bude plave boje. Dugme Crtaj krugove da iscrtava slučajan broj N krugova istog poluprečnika r (1/4 visine forme) čiji su

LAMPIRAN A: DDL DATABASE

THREE. Multiple windows

NATIONAL SENIOR CERTIFICATE GRADE 12

judul : dump mysql with delphi - opensource

Cross-Platform Development with Delphi 10.2 & FireMonkey. for Windows, Mac OS X (macos) & Linux. Harry Stahl

NATIONAL SENIOR CERTIFICATE GRADE 12

Graphics Programming with GDI and Fonts

Variable initialization and assignment

ӨЗБЕКСТАН РЕСПУБЛИКАСЫ ҲАЛЫҚ БИЛИМЛЕНДИРИӮ МИНИСТРЛИГИ ӘЖИНИЯЗ АТЫНДАҒЫ НӨКИС МӘМЛЕКЕТЛИК ПЕДАГОГИКА ИНСТИТУТЫ ФИЗИКА-МАТЕМАТИКА ФАКУЛЬТЕТИ

Printing in Delphi 5 IN THIS CHAPTER CHAPTER. The TPrinter Object 420. TPrinter.Canvas 421. Simple Printing 422. Printing a Form 425

MesuTher.dproj 07/05/ :56:44

Coding Standards Document

In Delphi script, when values are assigned to variables, the colon-equal operator is used; :=

12.2 Mixing HLA and MASM/Gas Code in the Same Program In-Line (MASM/Gas) Assembly Code in Your HLA Programs

«» 68, 19, 1, 41.,,,,,,,... : Delphi. : 1., ё Delphi. 4.. :,,,.,,

SENIOR CERTIFICATE EXAMINATION

UNIT Files. Procedure/Functionand Other Declarations (CONST, TYPE, VAR) can be stored under different Object Pascal Files (Library).

CSC Java Programming, Fall Java Data Types and Control Constructs

Object Pascal Language Guide

Writing Delphi Custom Components

DelphiScript Keywords

Program pro výpočet zkratových poměrů v elektrizační soustavě

Table of Contents Foreword Introduction About the book About the author Contact information Chapter 1: What is FireMonkey?

Function: function procedures and sub procedures share the same characteristics, with

SENIOR CERTIFICATE EXAMINATION GRADE 12

LAMPIRAN A RANGKAIAN SKEMATIK PERANGKAT KERAS

NATIONAL SENIOR CERTIFICATE GRADE 12

DMX-Dongle II Win16, Win32 & Dos Developer s Guide

NATIONAL SENIOR CERTIFICATE GRADE 12

Getting started with Java

ROBUST VIDEO DATA HIDING USING FORBIDDEN ZONE DATA HIDING AND SELECTIVE EMBEDDING

Combining kbmmw and kbmwabd for kbmwabd v and kbmmw v

Delphi by Design. One-Step ActiveX - Part 2


NEAR EAST UNIVERSI FACULTY OF ECONOMICS AND ADMINISTRATIVE SCIENCES DEPARTMENT OF COMPUTER INFORMATION SYSTEMS

Mathematical Modeling in Delphi

NEAR EAST UNIVERSITY. Faculty of Engineering. Department of Computer Engineering TIME TABLE DESIGN: DELPHI APPLICATION. Graduation Project COM-400

NATIONAL SENIOR CERTIFICATE GRADE 12

CS313D: ADVANCED PROGRAMMING LANGUAGE

Modbus Server. ARSoft International

Generic IP Camera Driver

Creating a Webserver in 5 minutes using kbmmw!

Part 1 The first steps

REFERENCE MATERIALS. Assignment, Display, and Input Evaluates expression and assigns the result to the variable a.

DATABASE AUTOMATION USING VBA (ADVANCED MICROSOFT ACCESS, X405.6)


Control MIPS unconditional branch instruction (i.e., jump)

Delphi XML-Beispiel-Code

Annex A (Informative) Collected syntax The nonterminal symbols pointer-type, program, signed-number, simple-type, special-symbol, and structured-type

TMS FNC TreeView. TMS SOFTWARE TMS FNC TreeView DEVELOPERS GUIDE

Delphi Language Guide

1. Create your First VB.Net Program Hello World

Beginning Programming (Pascal) Lecture 75. Figure 1. type-declarations. simple-type. pointer-type. array-type. file-type. set-type.

The inverse of a matrix

NATIONAL SENIOR CERTIFICATE GRADE 12

For more detailed information on the differences between DelphiScript and Object Pascal, refer to the DelphiScript Reference document.

Universitas Sumatera Utara

Public Key Cryptography and the RSA Cryptosystem

Engineering Innovation Center LabVIEW Basics

LAMPIRAN A : LISTING PROGRAM

sourcecode_of_keisanpro.txt

Introduction to Programming Using Java (98-388)

12.2 Mixing HLA and MASM/Gas Code in the Same Program In-Line (MASM/Gas) Assembly Code in Your HLA Programs

Transcription:

LAMPIRAN Listing Program

unit umain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls, ExtDlgs, DCPcrypt2, DCPrc4, DCPsha1, sskinmanager, Menus; type TfrmMain = class(tform) OpenPictureDialog1: TOpenPictureDialog; SavePictureDialog1: TSavePictureDialog; sskinmanager1: TsSkinManager; MainMenu1: TMainMenu; Action1: TMenuItem; Home1: TMenuItem; Encrypt1: TMenuItem; Decrypt1: TMenuItem; Exit1: TMenuItem; Label1: TLabel; Label2: TLabel; Page: TPageControl; TabSheet1: TTabSheet; Panel5: TPanel; Panel2: TPanel; imgencode: TImage; OpEncode: TButton; NextEncode: TButton; ResetEncode: TButton; TabSheet2: TTabSheet; Panel6: TPanel; Panel4: TPanel; imgdecode: TImage; OpDecode: TButton; NextDecode: TButton; ResetDecode: TButton; TabSheet3: TTabSheet; Label5: TLabel; Label6: TLabel; Label7: TLabel; btnencode: TButton; BackEncode: TButton; moencode: TMemo; TabSheet4: TTabSheet; Label3: TLabel; btndecode: TButton; BackDecode: TButton; A-1

eddecodepass1: TEdit; TabSheet5: TTabSheet; Label4: TLabel; modecode: TMemo; TabSheet6: TTabSheet; edencodepass1: TEdit; edencodepass2: TEdit; ResetEncode2: TButton; ResetDecode2: TButton; Label8: TLabel; Label9: TLabel; procedure btnencodeclick(sender: TObject); procedure btndecodeclick(sender: TObject); procedure FormCreate(Sender: TObject); procedure OpEncodeClick(Sender: TObject); procedure OpDecodeClick(Sender: TObject); procedure NextEncodeClick(Sender: TObject); procedure NextDecodeClick(Sender: TObject); procedure BackEncodeClick(Sender: TObject); procedure BackDecodeClick(Sender: TObject); procedure moencodechange(sender: TObject); procedure edencodepass1change(sender: TObject); procedure edencodepass2change(sender: TObject); procedure Home1Click(Sender: TObject); procedure Encrypt1Click(Sender: TObject); procedure Decrypt1Click(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure ResetEncodeClick(Sender: TObject); procedure ResetDecodeClick(Sender: TObject); procedure ResetEncode2Click(Sender: TObject); procedure ResetDecode2Click(Sender: TObject); private { Private declarations } function CarrierCheck(img: TBitmap): Boolean; function dodecrypt(pass, Content: String): String; function doencrypt(pass, Content: String): String; procedure Encode; procedure Decode; public { Public declarations } var frmmain: TfrmMain; Bmp: TBitmap; implementation {$R *.dfm} A-2

function getbyte(number: Byte): String; var i : integer; Bit : String[1]; Return : string[8]; i := 0; Return := '00000000'; if Number <> 0 then while Number <> 1 do Str(Number mod 2,Bit); Return[8-i] := Bit[1]; Number := Trunc(Number/2); Inc(i); Str(Number,Bit); Return[8-i] := Bit[1]; Result := Return; function getword(number: Word): String; var i : integer; Bit : String[1]; Return : string[16]; i := 0; Return := '0000000000000000'; if Number <> 0 then while Number <> 1 do Str(Number mod 2,Bit); Return[16-i] := Bit[1]; Number := Trunc(Number/2); Inc(i); Str(Number,Bit); Return[16-i] := Bit[1]; Result := Return; function getdecimal(bit: String): Integer; var i : Integer; Return: Integer; Return := 0; for i := 1 to Length(Bit) do if Bit[i] = '1' then Return := Return + Trunc(Exp((Length(Bit)-i)*ln(2))); A-3

Result := Return; procedure TfrmMain.Encode; var i, j, k, x, LSBCount: Integer; Red, Green, Blue: Integer; strmark, bitmark, bitcontent, tempcontent: String; bitred, bitgreen, bitblue: String; bitbaris, bitkolom: String; Bmp.Assign(imgEncode.Picture.Bitmap); Bmp.PixelFormat := pf24bit; if CarrierCheck(Bmp) then MessageDlg('File carrier sudah disisipi data.',mtwarning,[mbok],0); Exit; LSBCount := (Bmp.Width * Bmp.Height) * 3; LSBCount := LSBCount - (Bmp.Width * 3); tempcontent := edencodepass1.text + '#' + moencode.lines.text; tempcontent := doencrypt(edencodepass1.text, tempcontent); for i := 1 to Length(tempContent) do bitcontent := bitcontent + getbyte(ord(tempcontent[i])); if Length(bitContent) > LSBCount then MessageDlg('Content yang akan diisikan terlalu besar.',mtwarning,[mbok],0); Exit; Self.Cursor := crhourglass; strmark := '&&&'; bitmark := getbyte(ord(strmark[1])) + getbyte(ord(strmark[2])) + getbyte(ord(strmark[3])); j := 1; for i := 0 to 7 do Red := GetRValue(GetPixel(Bmp.Canvas.Handle,i,0)); Green := GetGValue(GetPixel(Bmp.Canvas.Handle,i,0)); Blue := GetBValue(GetPixel(Bmp.Canvas.Handle,i,0)); bitred := getbyte(red); bitgreen := getbyte(green); bitblue := getbyte(blue); A-4

Delete(bitRed,8,1); Delete(bitGreen,8,1); Delete(bitBlue,8,1); bitblue := bitblue + bitmark[j]; bitgreen := bitgreen + bitmark[j+1]; bitred := bitred + bitmark[j+2]; j := j + 3; Red := getdecimal(bitred); Green := getdecimal(bitgreen); Blue := getdecimal(bitblue); Bmp.Canvas.Pixels[i,0] := RGB(Red,Green,Blue); k := 1; for i := 1 to Bmp.Height - 1 do for j := 0 to Bmp.Width - 1 do Red := GetRValue(GetPixel(Bmp.Canvas.Handle,j,i)); Green := GetGValue(GetPixel(Bmp.Canvas.Handle,j,i)); Blue := GetBValue(GetPixel(Bmp.Canvas.Handle,j,i)); bitred := getbyte(red); bitgreen := getbyte(green); bitblue := getbyte(blue); Delete(bitRed,8,1); Delete(bitGreen,8,1); Delete(bitBlue,8,1); bitblue := bitblue + bitcontent[k]; bitgreen := bitgreen + bitcontent[k+1]; bitred := bitred + bitcontent[k+2]; k := k + 3; Red := getdecimal(bitred); Green := getdecimal(bitgreen); Blue := getdecimal(bitblue); Bmp.Canvas.Pixels[j,i] := RGB(Red,Green,Blue); if k > length(bitcontent) then Break; if k > length(bitcontent) then Break; A-5

k := 1; bitbaris := getword(i); for x := 8 to 15 do Red := GetRValue(GetPixel(Bmp.Canvas.Handle,x,0)); Green := GetGValue(GetPixel(Bmp.Canvas.Handle,x,0)); Blue := GetBValue(GetPixel(Bmp.Canvas.Handle,x,0)); bitred := getbyte(red); bitgreen := getbyte(green); Delete(bitRed,8,1); Delete(bitGreen,8,1); bitgreen := bitgreen + bitbaris[k]; bitred := bitred + bitbaris[k+1]; k := k + 2; Red := getdecimal(bitred); Green := getdecimal(bitgreen); Bmp.Canvas.Pixels[x,0] := RGB(Red,Green,Blue); k := 1; bitkolom := getword(j); for x := 16 to 23 do Red := GetRValue(GetPixel(Bmp.Canvas.Handle,i,0)); Green := GetGValue(GetPixel(Bmp.Canvas.Handle,i,0)); Blue := GetBValue(GetPixel(Bmp.Canvas.Handle,i,0)); bitred := getbyte(red); bitgreen := getbyte(green); Delete(bitRed,8,1); Delete(bitGreen,8,1); bitgreen := bitgreen + bitkolom[k]; bitred := bitred + bitkolom[k+1]; k := k + 2; Red := getdecimal(bitred); A-6

Green := getdecimal(bitgreen); Bmp.Canvas.Pixels[x,0] := RGB(Red,Green,Blue); Self.Cursor := crdefault; if SavePictureDialog1.Execute then SavePictureDialog1.DefaultExt := '*.bmp'; Bmp.SaveToFile(SavePictureDialog1.FileName); procedure TfrmMain.Decode; var i, j, k: Integer; Red, Green, Blue: Integer; bitcontent, tempcontent: String; bitred, bitgreen, bitblue: String; bitbaris, bitkolom: String; Baris, Kolom: Integer; Bmp.Assign(imgDecode.Picture.Bitmap); Bmp.PixelFormat := pf24bit; if not CarrierCheck(Bmp) then MessageDlg('File gambar tidak mengandung pesan.',mtwarning,[mbok],0); Exit; bitbaris := ''; for k := 8 to 15 do Red := GetRValue(GetPixel(Bmp.Canvas.Handle,k,0)); Green := GetGValue(GetPixel(Bmp.Canvas.Handle,k,0)); bitbaris := bitbaris + getbyte(green)[8] + getbyte(red)[8]; Baris := getdecimal(bitbaris); bitkolom := ''; for k := 16 to 23 do Red := GetRValue(GetPixel(Bmp.Canvas.Handle,k,0)); Green := GetGValue(GetPixel(Bmp.Canvas.Handle,k,0)); bitkolom := bitkolom + getbyte(green)[8] + getbyte(red)[8]; Kolom := getdecimal(bitkolom); tempcontent := ''; for i := 1 to Bmp.Height - 1 do for j := 0 to Bmp.Width - 1 do Red := GetRValue(GetPixel(Bmp.Canvas.Handle,j,i)); Green := GetGValue(GetPixel(Bmp.Canvas.Handle,j,i)); Blue := GetBValue(GetPixel(Bmp.Canvas.Handle,j,i)); A-7

bitred := getbyte(red); bitgreen := getbyte(green); bitblue := getbyte(blue); tempcontent := tempcontent + Copy(bitBlue,8,1) + Copy(bitGreen,8,1) + Copy(bitRed,8,1); if (Baris = i) and (Kolom = j) then Break; if (Baris = i) and (Kolom = j) then Break; bitcontent := ''; k := 1; for i := 1 to Round(Length(tempContent)/8) do bitcontent := bitcontent + Chr(getDecimal(Copy(tempContent,k,8))); k := k + 8; bitcontent := dodecrypt(eddecodepass1.text,bitcontent); if eddecodepass1.text = Copy(bitContent,1,Length(edDecodePass1.Text)) then modecode.lines.text := StringReplace(bitContent,edDecodePass1.Text+'#','',[rfReplaceAll]) else MessageDlg('Password salah.',mtwarning,[mbok],0); function TfrmMain.CarrierCheck(img: TBitmap): Boolean; var i: Integer; Red, Green, Blue: Integer; strmark, bitlsb: String; bitlsb := ''; for i := 0 to 7 do Red := GetRValue(GetPixel(img.Canvas.Handle,i,0)); Green := GetGValue(GetPixel(img.Canvas.Handle,i,0)); Blue := GetBValue(GetPixel(img.Canvas.Handle,i,0)); bitlsb := bitlsb + getbyte(blue)[8] + getbyte(green)[8] + getbyte(red)[8]; strmark := Chr(getDecimal(Copy(bitLSB,1,8))) + Chr(getDecimal(Copy(bitLSB,9,8))) + Chr(getDecimal(Copy(bitLSB,17,8))); Result := strmark = '&&&'; procedure TfrmMain.btnEncodeClick(Sender: TObject); A-8

if edencodepass1.text <> edencodepass2.text then MessageDlg('Konfirmasi password salah',mtwarning,[mbok],0); Exit; if imgencode.picture.bitmap = nil then MessageDlg('File carrier belum dipilih',mtwarning,[mbok],0); Exit; if Trim(moEncode.Lines.Text) = '' then MessageDlg('Content belum diisi',mtwarning,[mbok],0); Exit; Encode; procedure TfrmMain.btnDecodeClick(Sender: TObject); Decode; page.tabindex:=5; procedure TfrmMain.FormCreate(Sender: TObject); Bmp := TBitmap.Create; procedure TfrmMain.OpEncodeClick(Sender: TObject); var bmp : TBitmap; OpenPictureDialog1.Filter := 'Bitmaps (*.bmp) *.bmp'; OpenPictureDialog1.DefaultExt := '*.bmp'; if OpenPictureDialog1.Execute then bmp := TBitmap.Create; bmp.loadfromfile(openpicturedialog1.filename); imgencode.picture.loadfromfile(openpicturedialog1.filename); FreeAndNil(bmp); NextEncode.Enabled :=true; ResetEncode.Enabled :=true; procedure TfrmMain.OpDecodeClick(Sender: TObject); var bmp : TBitmap; OpenPictureDialog1.Filter := 'Bitmaps (*.bmp) *.bmp'; OpenPictureDialog1.DefaultExt := '*.bmp'; A-9

if OpenPictureDialog1.Execute then bmp := TBitmap.Create; bmp.loadfromfile(openpicturedialog1.filename); imgdecode.picture.loadfromfile(openpicturedialog1.filename); FreeAndNil(bmp); NextDecode.Enabled:=true; ResetDecode.Enabled:=true; procedure TfrmMain.NextEncodeClick(Sender: TObject); page.tabindex := 2; procedure TfrmMain.NextDecodeClick(Sender: TObject); page.tabindex := 4; procedure TfrmMain.BackEncodeClick(Sender: TObject); page.tabindex := 1; procedure TfrmMain.BackDecodeClick(Sender: TObject); page.tabindex := 3; procedure TfrmMain.moEncodeChange(Sender: TObject); if (edencodepass1.text ='') and (moencode.text ='') then btnencode.enabled := false; end else btnencode.enabled := true; end procedure TfrmMain.edEncodePass1Change(Sender: TObject); if (edencodepass1.text ='') and (moencode.text ='') then btnencode.enabled := false; end else A-10

btnencode.enabled := true; end procedure TfrmMain.edEncodePass2Change(Sender: TObject); if (edencodepass1.text ='') and (moencode.text ='') then btnencode.enabled := false; end else btnencode.enabled := true; end procedure TfrmMain.Home1Click(Sender: TObject); page.tabindex := 0; procedure TfrmMain.Encrypt1Click(Sender: TObject); page.tabindex := 1; procedure TfrmMain.Decrypt1Click(Sender: TObject); page.tabindex := 3; procedure TfrmMain.Exit1Click(Sender: TObject); Application.Terminate; procedure TfrmMain.FormShow(Sender: TObject); page.tabindex:=0; procedure TfrmMain.ResetEncodeClick(Sender: TObject); imgencode.picture.assign(nil); moencode.clear; edencodepass1.clear; edencodepass2.clear; ResetEncode.enabled :=false; NextEncode.enabled :=false; procedure TfrmMain.ResetDecodeClick(Sender: TObject); A-11

imgdecode.picture.assign(nil); modecode.clear; eddecodepass1.clear; NextDecode.enabled :=false; ResetDecode.enabled :=false; procedure TfrmMain.ResetEncode2Click(Sender: TObject); moencode.clear; edencodepass1.clear; edencodepass2.clear; procedure TfrmMain.ResetDecode2Click(Sender: TObject); modecode.clear; eddecodepass1.clear; end. A-12