Archive
Enhancements Since Delphi7
Pagi tadi, pas blogwalking di CDN, ada artikel baru seputar berbagai perbaikan atau fitur baru yang ada di Delphi setelah Delphi 7, artinya fitur baru yang ada di Delphi2005, Delphi2006 dan Delphi2007.
Selengkapnya baca:
New Delphi Language Features Since Delphi7
New IDE Features Since Delphi7
New VCL Features Since Delphi7
Well.. sudahkah Anda mencobanya..?
Convert.exe Like ?
Pada artikel sebelumnya, dibahas tentang bagaimana memanfaatkan tool convert.exe untuk mengubah format file DFM, baik dari text ke binary maupun sebaliknya. Nah pada artikel ini akan dibahas bagaimana melakukan konversi tersebut dengan menggunakan Delphi, tentu saja masih dengan fasilitas yang sederhana dan minim.
Deteksi Jenis Format
Nah karena format file DFM ada 2 (dua), yaitu text dan binary, maka tool harus mampu melakukan pendeteksian jenis format file yang diberikan dan kemudian melakukan konversi ke format yang sesuai, apakah text->binary atau binary-text.
Format binary ditandai dengan 3 byte $FF $0A $00 pada awal file, sedangkan format text ditandai dengan 6 karakter ‘object’ pada awal file.
Fungsi Konversi
Untuk melakukan konversi text->binary, Delphi sudah menyediakan fungsi ObjectTextToBinary dan ObjectTextToResource, dan fungsi ObjectBinaryToText dan ObjectResourceToText untuk konversi binary->text.
Selengkapnya dapat disimak pada kode berikut:
program MyConvert; {$APPTYPE CONSOLE} uses SysUtils, Classes; var FileName : string; ObjDFM : TMemoryStream; ObjOut : TMemoryStream; IsBinary : Boolean; Header: array[0..2] of Byte; begin FileName := ParamStr(1); ObjDFM := TMemoryStream.Create; ObjDFM.LoadFromFile(FileName); ObjDFM.Position := 0; ObjDFM.Read(Header, SizeOf(Header)); IsBinary := (Header[0] = $FF) and (Header[1] = $0A) and (Header[2] = $00); ObjDFM.Seek(0, soFromBeginning); ObjOut := TMemoryStream.Create; if IsBinary then ObjectResourceToText(ObjDFM, ObjOut) else ObjectTextToResource(ObjDFM, ObjOut); ObjOut.Position := 0; ObjOut.SaveToFile(FileName); ObjOut.Free; ObjDFM.Free; end.
Catatan: kode diatas masih sederhana, bersifat ‘proof of concept’ aja, belum ada error / exception handling. Hal ini untuk mempermudah pemahaman dan mempersingkat kode. 🙂
Convert.exe Like ?
Nah, tool yang sudah kita buat ini apakah secara ‘fungsi’ sama dengan Convert.exe atau bukan, Anda sendiri lah yang memutuskan. Yang jelas saya hanya ingin menunjukkan saja bahwa pembuatan tool tersebut relatif cukup mudah.
Salam.
DFM Converter
Seputar DFM
DFM adalah ekstensi khas dari Delphi yang berisi informasi object / komponen di dalam suatu form atau datamodule. Terdapat 2 (dua) versi format file DFM, yaitu binary dan text. Format file binary berupa stream object sedangkan format text berupa file teks biasa yang dapat dibaca.
Gambar DFM format binary
Gambar DFM format text
Walaupun kedua format tersebut dapat ditangani dengan baik oleh Delphi, namun bagi saya, akan lebih mudah membaca dalam format text. Dengan membaca file text tersebut, sedikit banyak saya dapat menggambarkan bagaimana bentuk form dan kondisi object – object yang ada di dalamnya.
Umumnya, ketika kita ingin membaca file DFM dalam format binary, kita akan menemui kesulitan, mau tidak mau kita harus membukanya melalui Delphi. Dan tahukah Anda, bahwa Delphi sudah menyediakan tool untuk melakukan konversi file DFM dari format binary ke format text, atau sebaliknya. Tool tersebut adalah convert.exe yang terletak di folder bin Delphi, dimana file yang akan dikonversi disertakan pada parameter 1 (satu).
Gambar Tool Convert dari Delphi
Penggunaan convert.exe
Untuk melakukan konversi dari format binary ke format text, maka parameter pertama adalah nama file DFM dalam format binary, ekstensi dari nama file tersebut tidak harus .dfm, namun bisa sembarang. Sebagai output adalah file dengan ekstensi txt.
Untuk melakukan konversi dari format text ke format binary, maka parameter pertama adalah nama file DFM dalam format binary. Walaupun ekstensi dari nama file bisa sembarang, namun sebaiknya hindari ekstensi dfm karena akan terjadi konflik ketika output file dihasilkan. Hal ini disebabkan karena eksetensi output adalah dfm sehingga akan terjadi kegagalan karena file tersebut sudah ada sebelumnya.
Nah berdasarkan penjelasan di atas, ketika kita ingin mengkonversi file DFM secara permanen, misalnya mengubah format binary ke text, maka kita harus melakukannya dalam 2 (dua) langkah, yaitu:
- jalankan convert.exe dengan parameter file DFM yang ingin di konversi, misalnya test.dfm
- rename file output hasil konversi, test.txt menjadi test.dfm
Otomatisasi convert.exe
Apabila penggunaan convert.exe dirasa merepotkan, kita dapat memudahkannya melalui file batch. Contoh berikut merupakan otomatisasi konversi format binary ke text. Untuk konversi sebaliknya, silahkan dimodifikasi.
@echo off
"C:\Program Files\Borland\BDS\4.0\bin\convert.exe" %1
move /y %~dpn1.txt %1
Integrasi ke IDE
Proses konversi pun dapat kita ‘tempel’ pada Menu IDE Delphi dengan pertimbangan bahwa kita tidak perlu keluar dari Delphi, membuka shell command dan menjalankan proses konversi.
Cukup klik menu konversi dan isikan parameter file yang akan dikonversi. Nah caranya adalah sebagai berikut:
- Pilih menu Tools -> Configure Tools;
- Pada jendela Tools Option, pilih tombol Add;
- Pada jendela Tool Properties, isikan caption menu pada field Title, nama file batch pada field Program, dan macro parameter pada field Parameters. Sebagai contoh gambar berikut:
- Klik OK -> Close.
Selamat menikmati 🙂
Secret Tips:
Beberapa penggunaan dan otomatisasi yang sudah dipaparkan sebelumya dapat dioptimalkan lagi dengan petunjuk berikut:
—————————————————————-
Delphi Form Conversion Utility Version 7.0
Copyright (c) 1995,2002 Borland Software Corporation
Usage: convert.exe [-i] [-s] [-t | -b]
-i Convert files in-place (output overwrites input)
-s Recurse subdirectories
-t Convert to text
-b Convert to binary
—————————————————————-
IDE Shortcut Keys
Penggunaan shortcut key banyak diminati karena aksesnya yang cukup cepat dan praktis. Umumnya akses suatu fasilitas dapat dijangkau dengan maksimal 3 (tiga) kombinasi penekanan tombol keyboard saja.
IDE Delphi dibekali dengan banyak shortcut untuk mengakses fasilitas yang ada, namun sayang sekali baru sedikit yang kita gunakan, bahkan mungkin dari sedikit yang kita gunakan tersebut, adalah shortcut yang standar dan banyak dikenal, shortcut lain yang merupakan shortcut khas IDE Delphi malah belum kita kenal.
Nah, untuk lebih memperkenalkan shortcut default yang disediakan IDE Delphi, berikut beberapa diantaranya:
Shortcut untuk Code Insight
Code Parameters CTRL+SHIFT+SPACE
Code Completion CTRL+SPACE
Code Templates CTRL+J
Shortcut untuk Class Completion
Class Completion CTRL+SHIFT+C
Class Nav Up CTRL+SHIFT+?
Class Nav Down CTRL+SHIFT+?
Shortcut untuk Jendela Message
Previous Message ALT+F7
Next Message ALT+F8
Shortcut untuk Jendela IDE
Code Explorer CTRL+SHIFT+E
Project Manager CTRL+ALT+F11
Window List ALT+0
Object Inspector F11
Code Browsing ALT+?
Pallete Filtering CTRL+ALT+P
Shortcut untuk Jendela debugger
Event Logs CTRL+ALT+V
Breakpoints CTRL+ALT+B
Watches CTRL+ALT+W
Threads CTRL+ALT+T
Shortcut untuk Jendela To-Do List
Add Item CTRL+SHIFT+T
Shortcut untuk Operasi Editing
Comment / Uncomment CTRL+/
Blocking Mode Line CTRL+O+L
Blocking Mode Column CTRL+O+C
Shortcut untuk Operasi Debugging
Trace Into F7
Step Over F8
Trace to Next Source Line SHIFT+F7
Run to Cursor F4
Run until Return SHIFT+F8
Program Reset CTRL+F2
Evaluate / Modify CTRL+F7
Add Watch CTRL+F5
Toggle Breakpoint F5
Shortcut untuk Operasi Kompilasi
Project Commands CTRL+F9
Syntax Check F4
Options CTRL+SHIFT+F11
Show Compiler Progress
Dahulu kala, saya terkejut ketika melihat sesuatu yang lain pada IDE rekan saya, yaitu tampilnya jendela proses kompilasi ketika suatu project atau package di kompilasi / link. Informasi yang ditampilkan meliputi nama project, nama unit yang sedang di kompilasi, nomor baris, jumlah keseluruhan baris kode yang telah di kompilasi, jumlah hint, jumlah warning dan jumlah error yang terjadi.
Ternyata jendela tersebut adalah salah satu fitur IDE Delphi. Dan sejak saat itulah saya aktifkan fasilitas tersebut mengingat betapa informatifnya fasilitas tersebut bagi saya.
Kemudian beberapa waktu yang lalu kejadian di atas terulang kembali, namun dengan pelaku yang berbeda. Yaitu rekan saya yang kebingungan dengan tampilnya jendela proses kompilasi yang ada pada IDE Delphi saya. Ah.. saya jadi teringat masa lalu dan berpikir bahwa ternyata bukan saya saja yang belum mengetahui fasilitas ini. Kemudian saya jelaskan bahwa hal tersebut adalah fasilitas standar pada IDE Delphi, dan berikut cara aktivasinya pada Turbo Delphi, untuk Delphi7 tidak jauh berbeda.
- Klik menu Tools -> Options untuk menampilkan jendela Options;
- Pilih Environment Options;
- Pada kotak Compiling and Running, aktifkan pilihan Show compiler progress;
- Pilih tombol OK untuk mengaktifkan fasilitas.
Dan fasilitas tersebut akan langsung aktif tanpa perlu restart Delphi.