Sabtu, 13 November 2010

Mastering Delphi 7

Mastering Delphi 7
by Marco Cantu ISBN:078214201X
Sybex © 2003 (1011 pages)
The best Delphi resource--now updated and expanded.



Table of Contents
Mastering Delphi 7
Introduction
Part I - Foundations
Chapter 1 - Delphi 7 and Its IDE
Chapter 2 - The Delphi Programming Language
Chapter 3 - The Run-Time Library
Chapter 4 - Core Library Classes
Chapter 5 - Visual Controls
Chapter 6 - Building the User Interface
Chapter 7 - Working with Forms
Part II - Delphi Object-Oriented Architectures
Chapter 8 - The Architecture of Delphi Applications
Chapter 9 - Writing Delphi Components
Chapter 10 - Libraries and Packages
Chapter 11 - Modeling and OOP Programming (with ModelMaker)
Chapter 12 - From COM to COM+
Part III - Delphi Database-Oriented Architectures
Chapter 13 - Delphi's Database Architecture
Chapter 14 - Client/Server with dbExpress
Chapter 15 - Working with ADO
Chapter 16 - Multitier DataSnap Applications
Chapter 17 - Writing Database Components
Chapter 18 - Reporting with Rave
Part IV - Delphi, the Internet, and a .NET Preview
Chapter 19 - Internet Programming: Sockets and Indy
Chapter 20 - Web Programming with WebBroker and WebSnap
Chapter 21 - Web Programming with IntraWeb
Chapter 22 - Using XML Technologies
Chapter 23 - Web Services and SOAP
Chapter 24 - The Microsoft .NET Architecture from the Delphi Perspective
Chapter 25 - Delphi for .NET Preview: The Language and the RTL
Appendix A - Extra Delphi Tools by the Author
Appendix B - Extra Delphi Tools from Other Sources
Appendix C - Free Companion Books on Delphi
Index
List of Figures
List of Tables
List of Listings
List of Sidebars

download link, http://hotfile.com/dl/82444995/35224ca/Sybex.Mastering.Delphi.7.chm.html

Selasa, 28 September 2010

Fungsi Pembulatan untuk Bilangan Desimal

Delphi telah menyediakan fungsi ROUND untuk membulatkan sebuah bilangan. Dengan fungsi round ini sebuah bilangan seperti 23.4 dapat dibulatkan menjadi 23 atau 23.6 dibulatkan menjadi 24.

Sekarang bagaimana kalau kasusnya membulatkan bilangan desimal seperti 23 menjadi 20 atau 24 menjadi 25..??

Buat saja fungsi round sendiri, berikut ini saya sertakan contoh fungsi untuk membulatkan sebuah bilangan desimal.
Cara menggunakan cukup ketik CUSTOMROUND(23,'d',1) atau CUSTOMROUND(24,'u',1) dimana 'd' untuk pembulatan ke bawah dan 'u' untuk pembulatan keatas. Mudah-mudahan dengan fungsi ini bisa bermanfaat, khususnya untuk membangun aplikasi financial.

function GenerateZeros(iCount: Int64): string;
function CustomRound(rValue: Extended; cRoundType: char; iNumofDigits: Integer): Int64;

function GenerateZeros(iCount: Int64): string;
var i: Int64;
sTemp: string;
begin
i := 1;
sTemp := '';
while i <= i Count do begin sTemp := sTemp + '0'; i := i + 1; end; Result := sTemp; end; function CustomRound(rValue: Extended; cRoundType: char; iNumofDigits: Integer): Int64; var sTemp, sFirstPart, sSecondPart: string; iTemp1, iTemp2: Int64; iFirstNumOfSecondPart: byte; begin //buang angka desimal sTemp := IntToStr(Trunc(rValue)); if Length(sTemp)>iNumofDigits then
begin

sFirstPart := Copy(sTemp, 1, Length(sTemp)-iNumofDigits);
sSecondPart := Copy(sTemp, Length(sTemp)-iNumofDigits+1, iNumofDigits);

iFirstNumOfSecondPart := StrToInt(sSecondPart[1]);

if cRoundType = 'U' then
begin
if (StrToInt(sSecondPart)<>0) then
begin
if (iFirstNumOfSecondPart>=1) and (iFirstNumOfSecondPart<=5) then begin sSecondPart := '5' + GenerateZeros(Length(sSecondPart)-1); end else if (iFirstNumOfSecondPart>=6) and (iFirstNumOfSecondPart<=9) then begin sFirstPart := IntToStr(StrToInt(sFirstPart)+1); sSecondPart := GenerateZeros(Length(sSecondPart)); end; end; end else if cRoundType = 'D' then begin if (StrToInt(sSecondPart)<>0) then
begin
if (iFirstNumOfSecondPart>=1) and (iFirstNumOfSecondPart<=5) then begin sSecondPart := GenerateZeros(Length(sSecondPart)); end else if (iFirstNumOfSecondPart>=6) and (iFirstNumOfSecondPart<=9) then
begin
sSecondPart := '5' + GenerateZeros(Length(sSecondPart)-1);
end;
end;
end;

Result := StrToInt(sFirstPart + sSecondPart);
end
else
begin
Result := StrToInt(FormatFloat('#,#',rValue));
end;
end;

Senin, 27 September 2010

Membuat File Help untuk aplikasi Delphi

Ketika membuat sebuah aplikasi Professional maka file Help (petunjuk online penggunaan aplikasi) merupakan bagian yang penting dan bermanfaat agar Pengguna tidak kesulitan dalam mengoperasikan aplikasi yang kita buat. Secara default komponen delphi bisa dihubungkan langsung dengan file help yang mengacu pada sebuah keyword/context ID melalui Property dari masing-masing komponen, sehingga kita bisa membuat sebuah panduan yang sangat mendetail pada aplikasi yang kita buat hanya dengan menggunakan keyword/context ID.
Walaupun sekarang ini file Help berformat *.hlp bukan lagi menjadi standard pembuatan help (digantikan *.chm), namun sayang apabila kita tidak bisa memanfaatkannya, karena untuk membuatnya sudah tersedia tool bawaan langsung dari program Delphi yang biasanya file hcw.exe terinstall pada direktori [$DELPHI]\help\tool. Ditambah program Word Processing yang professional seperti OpenOffice (MS-Word) untuk membuat file *.rtf nya.

Keuntungan aplikasi help dengan format file *.hlp
1. Mudah digunakan, karena tiap komponen2 Delphi bisa dihubungkan langsung melalui property komponennya, dengan menggunakan keyword ataupun context file help yang kita buat.
2. Sudah tersedia program pembuatnya (hcw.exe :: satu paket dengan apliksai Delphi)
3. mendukung penggunaan help context dan help keyword
4. file help relatif kecil
5. tersedia built in macro yang banyak dan bermanfaat (± 100 jenis macro), untuk memperlengkap dan memanipulasi help.

Silakan Download Project File help ini lengkap di sini.
http://www.savefile.com/files/1205245

Mengakses Perangkat Luar Melalui Serial Port Menggunakan Borland Delphi

Mengenal Port di Komputer
Serial port merupakan standar interface untuk komputer, selain serial port ada juga paralel port yang dapat digunakan untuk mengakses hardware. Perbedaan antara serial dan paralel port tersebut yaitu cara port tersebut untuk mengirim dan menerima data. Serial port pada komputer sering digunakan untuk mouse (model lama), modem dan lain-lain sedangkan paralel port sering digunakan untuk printer, scanner dan lain sebagainya.
Perbedaan serial dan paralel port

Metode Pengaksesan Perangkat Luar
Disini saya akan menggolongkan metode akses perangkat luar dengan 2 (dua) golongan yaitu Aktif dan Pasif ditinjau dari komputer yang mengaksesnya.
- Aktif
Metode ini mengharuskan komputer untuk mengirim data ke perangkat luar terlebih dahulu sebelum perangkat luar mengirimkan datanya ke komputer.Data yang dikirimkan komputer dapat berupa kata atau huruf. Kata atau huruf yang akan dikirim ke perangkat luar ini tidak memiliki standar baku karena tiap perangkat luar memiliki susunan masing, untuk dapat mengetahui kata atau huruf yang akan dikirimkan dapat dilihat dalam buku manual yang telah disertakan oleh tiap perangkat. Contohnya PH meter digital, beberapa model barcode, instrumen pengendalian dan lain-lain.
- Pasif
Metode ini perangkat luarlah yang aktif mengirimkan data sedangkan komputer hanya menerima data. Contohnya mouse.
Konfigurasi
Untuk dapat mengakses perangkat lunak kita harus mengetahui terlebih dahulu konfigurasi dari perangkat luar tersebut antara lain:
- Port yang akan digunakan, komputer yang sekarang terdapat 2 port serial
- Baud rate, kecepatan data yang akan digunakan
- Data bit, bit data
- Stop bit, bit untuk memisahkan data
- Parity, bit untuk validasi data yang telah dikirim
- Flow control
Konfigurasi tiap perangkat berbeda-beda sehingga kita harus memiliki buku manual untuk dapat mengaksesnya.
Studi Kasus
Disini studi kasus yang dihadapi yaitu mengakses DO (Dissolved Oxygen) meter yaitu alat yang digunakan untuk mengetahui kadar oksigen di dalam larutan dengan konfigurasi sebagai berikut.
- Port: COM 1
- Baud Rate: 9600
- Data Bit: 8
- Stop Bit: 1
- Parity: odd
- Flow Control: software
Perangkat ini menggunakan metode aktif dengan pengaktifan data dengan huruf D (perangkat akan mengirimkan data jika komputer mengirimkan huruf D). Perangkat DO ini akan menampilkan struktur data sebagai berikut:
Data ke + spasi + nilai DO + % +'DO' + suhu + C + tanggal perangkat
Contohnya: 218 30%DO25%C08/11/04
Software yang diinginkan dapat menampilkan data pada sebuah grid dan grafik dengan interval waktu 1 detik.
Software yang akan digunakan untuk mengakses perangkat luar yaitu:
- Borland Delphi 7
- Comport, component ini bersifat freeware dan dapat Anda download pada situs www.sourceforge.net/projects/comport (besarnya sekitar 224 KB). Thank's to Dejan Crnila
Pembuatan Software
Setelah kita install Component Comport, akan terlihat seperti dibawah ini:

Design Tampilan

Langkah petama kita akan membuat procedure untuk setting konfigurasi.
procedure TForm1.Button_SettingsClick(Sender: TObject);
begin
ComPort.ShowSetupDialog;
end;
Hal tersebut akan memunculkan form sebagai berikut.

Procedure Timer
procedure TForm1.Timer1Timer(Sender: TObject);
var
Str: String;
begin
edit1.text :='';
Str := 'D';
Str := Str + #13#10;
ComPort.WriteStr(Str);
end;
Waktu pengambilan data dapat kita tempatkan pada ComboBox.
Untuk Tombol Proses
Algoritma dari event ini yaitu:
- Menghapus suluruh data yang telah ditampilkan
- Mengaktifkan comport
- Mengaktifkan timer
procedure TForm1.BitBtn1Click(Sender: TObject);
var a : integer;
begin
TabSheet2.show;
Timer1.Interval := strtoint(ComboBox1.text);
if BitBtn1.Caption = 'Proses' then
begin
if y > 0 then
for a := 1 to y do
begin
StringGrid1.Cells[0,a]:= ' ';
StringGrid1.Cells[1,a]:= ' ';
StringGrid1.Cells[2,a]:= ' ';
StringGrid1.Cells[3,a]:= ' ';
end;
y:=0;
Chart1.SeriesList.Series[0].Clear;
ComPort.Open;
Timer1.Enabled := true;
BitBtn1.Caption := 'Stop';
end
else
begin
ComPort.Close;
Timer1.Enabled := false;
BitBtn1.Caption := 'Proses'
end;
end;
Untuk menerima data dari perangkat dapat kita ambil pada event RXChart.
Algoritma dari event ini yaitu:
- Mengetahui struktur data dan mengetahui bahwa data terakhir adalah #13, #13 dipakai sebagai acuan bahwa 1 (satu) data secara keseluruhan telah terkirim
- Memecah data dan mengambil data yang kita inginkan dalam hal ini data DO dan suhu
- Menampilkan data di StringGrid dan Chart
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str,dtinput,kata,data: String;
z:integer;
a,b :integer;
suhu,panas,data_piece : string;
FData,FSuhu : single;
begin
ComPort.ReadStr(Str, Count);
edit1.text := edit1.text+str;
data_com := edit1.text;
if str=#13 then
begin
dtinput := trim(edit1.Text);
a := pos(' ',dtinput);
b := pos('%',dtinput);
data := copy(dtinput,a+1,b-a-1);
Fdata := StrToFloat(trim(data));

a := pos('O',dtinput);
b := pos('C',dtinput);
suhu := copy(dtinput,a+3,b-a-4);
FSuhu := StrToFloat(trim(suhu));

inc(y);

StringGrid1.Cells[1,y]:= FormatDateTime('dd/mm/yyyy',date)+' '+FormatDateTime('hh:mm:ss',time);
StringGrid1.Cells[2,y]:= FloatToStr(Fdata);
StringGrid1.Cells[3,y]:= trim(suhu);
StringGrid1.Cells[0,y]:= inttostr(y);
if y=StringGrid1.RowCount then
StringGrid1.RowCount := StringGrid1.RowCount+1;
Label10.caption := suhu;
Chart1.SeriesList.Series[0].AddY(FData);
end;
end;
procedure make_decision(a: integer; b: string);
begin
if data = '5' then
begin
writeln('hebat banget');
writecommand('hebat sekali');
for i := 1 to 5 do
begin
a := i + n;
end;
end;
end;

Demikianlah tulisan sederhana mengenai pengaksesan serial port dengan menggunakan Borland Delphi. Semoga bermanfaat bagi Anda semua.