PERCOBAAN I STATEMENT
Pendahuluan Statement merupakan bagian program yang berisi perintah yang akan dieksekusi/dijalankan. Karena itu, statement-statement ini menentukan bagaimana jalannya program dan bagaimana suatu nilai variable dimanipulasi/berubah. Program 1
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) cmbMinat: TComboBox; lstProgram: TListBox; 1 | M o d u l P r a k t i k u m K o m p u t e r
btnRef: TButton; Label1: TLabel; Label2: TLabel; procedure FormCreate(Sender: TObject); procedure btnRefClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin //Menampilkan pilihan minat keahlian cmbMinat.AddItem('Kedokteran',cmbMinat); cmbMinat.AddItem('Teknik',cmbMinat); cmbMinat.AddItem('Hukum',cmbMinat); end; procedure TForm1.btnRefClick(Sender: TObject); begin //Membuat list box kosong lstprogram.Clear; if (cmbminat.Text='Kedokteran') then 2 | M o d u l P r a k t i k u m K o m p u t e r
begin //Menampilkan jenis referensi program lstProgram.AddItem('Biologi',lstProgram); lstProgram.AddItem('Kimia',lstProgram); lstProgram.AddItem('Fisika',lstProgram); end; if (cmbminat.Text='Teknik') then begin //Menampilkan jenis referensi program lstProgram.AddItem('Matematika',lstProgram); lstProgram.AddItem('Fisika', lstProgram); // lstProgram.AddItem('Fox Pro',lstProgram); end; if (cmbminat.Text='Hukum') then begin //Menampilkan jenis referensi program lstProgram.AddItem('Ilmu Undang-undang',lstProgram); lstProgram.AddItem('Ilmu Sosial',lstProgram); end; end; end.
3 | M o d u l P r a k t i k u m K o m p u t e r
Program 2
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; cbBagian: TComboBox; Label2: TLabel; edPassword: TEdit; btnLogin: TButton; procedure btnLoginClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure cbBagianChange(Sender: TObject); private { Private declarations } 4 | M o d u l P r a k t i k u m K o m p u t e r
public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btnLoginClick(Sender: TObject); var bagian,password:String; begin //Menampung bagian dan password bagian:=cbbagian.Text; password:=edpassword.Text; //Pengecekkan Bagian Accounting if (bagian='Accounting') and (password='hitunguang') then showmessage('Login sukses!!!') else begin //Pengecekkan Bagian Produksi if (bagian='Produksi') and (password='buatbarang') then showmessage('Login sukses!!!') else begin //Pengecekkan Bagian Personalia if (bagian='Personalia') and (password='rekrutorang') then showmessage('Login sukses!!!') else begin 5 | M o d u l P r a k t i k u m K o m p u t e r
//Pengecekkan Bagian Marketing if (bagian='Marketing') and (password='jualbarang') then showmessage('Login sukses!!!') else showmessage('Login gagal!!!') end; end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin //Menampilkan bagian pada combo box cbbagian.AddItem('Accounting',cbBagian); cbbagian.AddItem('Produksi',cbBagian); cbbagian.AddItem('Personalia',cbBagian); cbbagian.AddItem('Marketing',cbBagian); end; procedure TForm1.cbBagianChange(Sender: TObject); begin end; end. Petunjuk Praktikum 1. Buatlah program 1 dan program 2 menggunakan Delphi 7 dengan memperhatikan component palete yang digunakan 2. Running program dan Catat error yang terjadi dan solusi perbaikan 3. Buatlah Algoritma dan FlowChart pada kedua program tersebut
Tugas Buat Program Aplikasi Username dan Password untuk membuka aplikasi lain
6 | M o d u l P r a k t i k u m K o m p u t e r
PERCOBAAN II DELPHI 7 dan Win API
Pendahuluan Windows API (Aplication Programming Interface)Merupakan sekumpulan fungsi-fungsi ekternal yang terdapat dalam file-file perpustakaan Windows (Library Windows) atau library lainnya yang dapat digunakan oleh programmer. Fungsi ini dapat menangani semua yang berhubungan dengan Windows, kotak dialog (buka file, simpan file, memilih font, memilih warna, dan lain-lain), Windows shell, setting sistem operasi, penanganan file, mengakses sistem registry, memainkan musik, dan sebagainya. Fungsi ini menyediakan banyak fitur-fitur stnadar untuk semua program yang berbasis Windows. Program 1
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; 7 | M o d u l P r a k t i k u m K o m p u t e r
Label6: TLabel; Label7: TLabel; EditMemLoad: TEdit; EditTotPhys: TEdit; EditAvailPhys: TEdit; EditTotPage: TEdit; EditAvailPage: TEdit; EditTotVir: TEdit; EditAvailVir: TEdit; Timer1: TTimer; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } MemInfo : TMemoryStatus; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin MemInfo.dwLength := SizeOf(TMemoryStatus); GlobalMemoryStatus(MemInfo); end; procedure TForm1.Timer1Timer(Sender: TObject); begin GlobalMemoryStatus(MemInfo); // Memori fisik yang terpakai (%) EditMemLoad.Text := IntToStr(MemInfo.dwMemoryLoad); 8 | M o d u l P r a k t i k u m K o m p u t e r
// Total memori fisik (KByte) EditTotPhys.Text := FormatFloat('#,', MemInfo.dwTotalPhys div 1024); // Memori fisik yg tersisa (Kbyte) EditAvailPhys.Text := FormatFloat('#,', MemInfo.dwAvailPhys div 1024); // Total pagefile (KByte) EditTotPage.Text := FormatFloat('#,', MemInfo.dwTotalPageFile div 1024); // Pagefile tersisa (KByte) EditAvailPage.Text := FormatFloat('#,', MemInfo.dwAvailPageFile div 1024); // Total memori virtual (KByte) EditTotVir.Text := FormatFloat('#,', MemInfo.dwTotalVirtual div 1024); // Memori virtual tersisa (KByte) EditAvailVir.Text := FormatFloat('#,', MemInfo.dwAvailVirtual div 1024); end; end. Program 2
unit Unit1; interface 9 | M o d u l P r a k t i k u m K o m p u t e r
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) GroupBox1: TGroupBox; DateTimePicker1: TDateTimePicker; DateTimePicker2: TDateTimePicker; Label1: TLabel; Button1: TButton; Label2: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } TheSysTime : TSystemTime; //Tahun, Bulan, Tanggal : Word; //Jam, Menit, Detik, MDetik : Word; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var TheDate : TDate; TheTime : TTime; begin FillChar(TheSysTime, sizeof(TheSysTime), #0); // Mengambil data tanggal dari komponen DateTimePicker1 TheDate := DateTimePicker1.Date; DecodeDate(TheDate, TheSysTime.wYear, TheSysTime.wMonth, TheSysTime.wDay); // Mengambil data waktu dari komponen DateTimePicker2 TheTime := DateTimePicker2.Time; DecodeTime(TheTime, TheSysTime.wHour, TheSysTime.wMinute, TheSysTime.wSecond, TheSysTime.wMilliSeconds); 10 | M o d u l P r a k t i k u m K o m p u t e r
// Mengeset waktu system if SetSystemTime(TheSysTime) then ShowMessage('Berhasil mengeset waktu sistem') else ShowMessage('Gagal mengeset waktu sistem'); end; end. Petunjuk Praktikum 1. Buatlah program 1 dan program 2 menggunakan Delphi 7 dengan memperhatikan component palete yang digunakan 2. Running program dan Catat error yang terjadi dan solusi perbaikan 3. Buatlah Algoritma dan FlowChart pada kedua program tersebut
11 | M o d u l P r a k t i k u m K o m p u t e r
PERCOBAAN III Client Server Pendahuluan Pada Delphi, khususnya Delphi terdapat komponen yang berfungsi untuk komunikasi antara 2 komputer atau lebih yang terhubung melalui jaringan. Untuk program Delphi yang akan kita buat ini terdapat 2 aplikasi, yaitu aplikasi client dan aplikasi server.
Program 1
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} // Fungsi untuk memperoleh nama user function GetCompName(var CompName: string) : boolean; const MaxCompNameLen = 255; var 12 | M o d u l P r a k t i k u m K o m p u t e r
dwCompNameLen : DWORD; begin Result := false; dwCompNameLen := MaxCompNameLen - 1; // Mengubah alokasi panjang string 'sCompName' SetLength(CompName, MaxCompNameLen); // Cari nama user if GetComputerName(PChar(CompName), dwCompNameLen) then Result := true; // Mengubah panjang string 'sCompName' sesuai dengan // panjang karakter nama komputer yg diperoleh SetLength(CompName, dwCompNameLen); end;
procedure TForm1.Button1Click(Sender: TObject); var CompName : string; begin if GetCompName(CompName) = true then ShowMessage('Nama Komputer : ' + CompName) else ShowMessage('Gagal memperoleh nama komputer'); end; end. Program 2
unit Unit1; interface uses WinSock, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 13 | M o d u l P r a k t i k u m K o m p u t e r
StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} function GetIP(var HostName, IPAddr: string): Boolean; type Name = array[0..100] of Char; PName = ^Name; var PHE: PHostEnt; // Pointer ke struktur HOSTENT HName: PName; // Nama Host WSAData: TWSAData; // Struktur WSADATA Windows Socket i: Integer; begin Result := False; // Memulai sesi Windows Socket if WSAStartup($0101, WSAData) <> 0 then Exit; IPAddr := ''; New(HName); // Menemukan nama host standar pada komputer lokal if GetHostName(HName^, SizeOf(Name)) = 0 then begin HostName := string(HName^); 14 | M o d u l P r a k t i k u m K o m p u t e r
// Memperoleh informasi host dari nama host yg diketahui PHE := GetHostByName(HName^); for i := 0 to PHE^.h_length - 1 do IPaddr := Concat(IPAddr, IntToStr(Ord(PHE^.h_addr_list^[i])) + '.'); // Mengeset panjang string alamat IP yg diperoleh SetLength(IPAddr, Length(IPaddr) - 1); Result := True; end; Dispose(HName); // Mengakhiri sesi Windows Socket WSACleanup; end; procedure TForm1.Button1Click(Sender: TObject); var HostName, IP : string; begin if GetIP(HostName, IP) then begin Edit1.Text := HostName; Edit2.Text := IP; end else ShowMessage('Gagal memperoleh nama Host dan IP'); end; end.
15 | M o d u l P r a k t i k u m K o m p u t e r
Program 3 Client
unit RSClient; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, WinXP, ScktComp; type TForm1 = class(TForm) GroupBox1: TGroupBox; Edit1: TEdit; Button1: TButton; StaticText1: TStaticText; StaticText2: TStaticText; Button2: TButton; Button3: TButton; WinXP1: TWinXP; ClientSocket1: TClientSocket; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; 16 | M o d u l P r a k t i k u m K o m p u t e r
var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button3Click(Sender: TObject); begin application.Terminate; // keluar program end; procedure TForm1.Button1Click(Sender: TObject); begin clientsocket1.Host:=edit1.Text; // alamat ip server clientsocket1.Active:=true; // mengaktifkan / membuka socket sisi client clientsocket1.Port:=1880; // menggunakan port 1880 end; procedure TForm1.FormCreate(Sender: TObject); begin button2.Enabled:=false; // saat aplikasi mulai dijalankan button shutdown di disable end; procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); //saat soket client error begin button2.Enabled:=false; //disable button shutdown showmessage('Error On Socket'); //menampilkan pesan error end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); //saat sudah terhubung ke server begin statictext2.Caption:='Connected to Server'; //keterangan bahwa sudah terhubung ke server button2.Enabled:=true; // button shutdown di aktifkan end; procedure TForm1.Button2Click(Sender: TObject); begin //button shutdown if (clientsocket1.Socket.Connected) then //saat soket terhubung maka clientsocket1.Socket.SendText('shutdown'); // button 2 mengirim string ke server end; 17 | M o d u l P r a k t i k u m K o m p u t e r
end.
Server
unit RSServer; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp, WinXP; type TForm1 = class(TForm) WinXP1: TWinXP; ServerSocket1: TServerSocket; StaticText1: TStaticText; Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure Edit1Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} 18 | M o d u l P r a k t i k u m K o m p u t e r
procedure TForm1.FormCreate(Sender: TObject); begin serversocket1.Open; serversocket1.Port:=1880; end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin edit1.Text:=socket.ReceiveText; end; procedure TForm1.Edit1Change(Sender: TObject); begin if edit1.Text='shutdown' then begin winexec('shutdown -s -t 0 -f',sw_normal); end; end; end.
Petunjuk Praktikum 1. Buatlah program 1 dan program 2 menggunakan Delphi 7 dengan memperhatikan component palete yang digunakan 2. Running program dan Catat error yang terjadi dan solusi perbaikan 3. Buatlah Algoritma dan FlowChart pada kedua program tersebut
TUGAS Buatlah Aplikasi Client – Server
19 | M o d u l P r a k t i k u m K o m p u t e r