Archive for the ‘Pemrograman Delphi’ Category

Problem instalasi delphi 7 di windows 7

Hal yang berbeda antara Windows XP dan Windows 7 adalah masalah access permission yang ada di Windows 7 selain masalah fitur tambahan yang lain. Itulah sebabnya, banyak pengguna Windows XP yang tidak ingin beralih/pindah Operating Sistem Windows 7. Menurutnya, banyak program yang tidak disupport oleh OS Windows 7. Gimana dengan anda, apa setuju dengan kata mereka??? Sebenarnya, ini hanya pada masalah access permission yang ada di C: sehingga program seperti Borland Delphi 7 tidak bisa running di Windows 7.

Saat Proses Instalasi

  • Login ke sistem sebagai administrator.
  • Kemudian lakukan proses instalasi seperti pada windows biasa dan abaikan notifikasi pesan jika muncul
  • Selanjutnya jalankan Delphi 7, kemudian anda  akan menemukan error tentang mengubah nama file delphi32.$$$ to .dro di lokasi  /program files/delphi directories .

Cara memberi permission access

  1. Buka properties directory pada c:/program files/borland.
  2. Pada Tab awal hilangkan tanda cek pada Read-only attribute kemudian klik tombol Apply untuk mengaplikasikan perintah.
  3. Buka tab security kemudian berilah hak full akses untuk users yang anda pakai untuk directory  c:/program files/borland.

Jalankan ulang delphi 7 anda,…kini siap digunakan

Mematikan proses yang sedang berjalan di Window OS

Kambuh lagi belajar pemrograman sistem setelah ada tantangan diminggu ini untuk membuat image processing dengan algoritma huffman.

Delphi telah menyediakan function untuk mematikan proses yang sedang berjalan di sistem window yaitu TerminateProcess . Dengan pola penulisan :

 TerminateProcess( param1, param2)

Ket :
param1 : proses yang sedang terbuka ( dijalankan )
param2 : kode identitas proses

Sebelum mentarget proses apa yang akan dimatikan, tentunya kita harus mengetahui proses yang sedang berjalan, maka gunakan function
PProcessEntry32 , yang disediakan delphi. ( Delphi memang baik hati 🙂 ).

Semua process yang terbuka , saya visualkan dalam komponen listview, dengan kode seperti dibawah ini :

procedure TfProcess.ShowList;
var I       : Integer;
    PE      : TProcessEntry32;
    HAppIcon: HICON;
begin
  SendMessage(ListView1.Handle, WM_SETREDRAW, Integer(False), 0);
  ListView1.Items.Clear;
  for i:=0 to FProcList.Count-1 do
  begin
    PE:=PProcessEntry32(FProcList.Items[I])^;
    HAppIcon:=ExtractIcon(HInstance, PE.szExeFile, 0);
    if HAppIcon=0 then HAppIcon:=LoadIcon(0, IDI_WINLOGO);
    with ListView1.Items.Add do
    begin
      Caption :=PE.szExeFile;
      Data    :=FProcList.Items[I];
      SubItems.Add(IntToStr(PE.cntThreads));
      SubItems.Add('$'+IntToHex(PE.th32ProcessID,8));
      SubItems.Add('$'+IntToHex(PE.th32ParentProcessID,8));
      SubItems.Add(IntToStr(PE.pcPriClassBase));
      ImageIndex:=ImageList_AddIcon(ImageList1.Handle, HAppIcon);
    end;
  end;
  SendMessage(ListView1.Handle, WM_SETREDRAW, Integer(True), 0);
  InvalidateRect(ListView1.Handle, nil,False);
end;

Kemudian kode dengan menggunakan event onclick pada tombol untuk mematikan proses, sebagai berikut :

procedure TfProcess.Button2Click(Sender: TObject);
var  Ret: BOOL;
     PrID: integer; //process identifier
     Ph: THandle;   //process handle
begin
  If ListView1.ItemIndex < 0 Then Exit;
  if Tanya('matikan proses '+ListView1.Items.Item[ListView1.ItemIndex].Caption) then
  begin
    with ListView1 do
    begin
      PrID  :=StrToInt(ItemFocused.SubItems[1]);
      Ph    :=OpenProcess(1, BOOL(0), PrID);
      Ret   :=TerminateProcess(Ph, 0);
      Refresh;
      if Integer(Ret) = 0 then
      begin
          MessageDlg('Tidak bisa ditutup ' + ItemFocused.Caption, mtError, [mbCancel], 0);
          FormShow(Self);
      end
      else
      begin
         ItemFocused.Delete;
         FormShow(Self);
      end;
   end;
  end;
end;

Ehmmm….kok mirip task managernya window ???? trus apa bedanya ? …mungkin timbul pertanyaan ini. bedanya, ini mbuat sendiri dan open source kalo task manager ga open source :D.

Tertarik mencoba ? download aplikasinya disini

Tertarik mengembangkan ? download sourcodenya disini

Tidak tertarik ???? ….ya sudah ga pa2 :D.

Aplikasi ini bisa dikembangkan untuk hal-hal positif, seperti pembatasan pemakaian aplikasi pada sebuah jaringan. Tapi juga bisa disalah gunakan untuk hal-hal negatif, seperti membuat virus yang berbahaya (dosa tanggung sendiri) :D.

Notes :
– Aplikasi source code ini menggunakan vcl skin nextsuite dan tray icon

Semoga bermanfaat…..

Menambah kata rupiah didelphi

Terinspirasi menulis ini karena banyak temen – temen yang lagi nyari :D.Sering kita jumpai dalam membuat laporan berupa nota atau di listview yang berhubungan dengan uang harus ditampilkan dalam format rupiah.
Nah, untuk menampilkan pemisah ribuan (thousand separator) dan menambah kata rupiah, saya membuat function seperti dibawah ini.

function TampilDuit(duit : String):String;
begin
 Result := FormatCurr('"Rp. ",#000",00',StrToCurr(duit));
end;

Penjelasan :
Nama function tampilDuit dengan parameter awal berupa string dan nilai kembalinya berupa string pula. Dalam formatCurr, data harus bertipe Currency sehingga parameter yang dimasukkan, dikonversi terlebih dahulu dari string ke currency dengan perintah StrToCurr.

Contoh pemanggilan function :

      with dm.q1 do
      begin
          LabelTotal.Caption:= tampilDuit(FieldbyName('total').AsString);
      end;

semoga bermanfaat.

Menulis konfigurasi di ini file

Sebagai mana yang sering kita lihat bahwa file ‘ini’ , digunakan untuk menyimpan settingan konfigurasi. Berikut ini sekedar share aja,  dengan memanggil RTL(baca:runtime library)  iniFiles, kita dapat mebuat dan menulis kedalam ini file.

pertama, panggil unit inifile di uses. pada event klik button tulis kode berikut ini :


procedure TForm1.Button1Click(Sender: TObject);
var MyIniFile : TIniFile;  // deklarasi variabel dari kelas inifile
begin
   //Membuat file INI bernama "setting.ini"
   MyIniFile := TIniFile.Create(GetCurrentDir + '\setting.ini');
   try
   //menulis kedalam file ini
       MyIniFile.WriteString('setting','host',Edit1.Text);
       MyIniFile.WriteString('setting', 'root',Edit2.Text);
       MyIniFile.WriteString('setting','pass',Edit3.Text);
   finally
       MyIniFile.Free;  // setelah berhasil menulis, maka dibebaskan(dealokasi memory virtual)
   end;
end;

Parameter WriteString ada 3 :

1. section -> bagian yang akan ditulisi yaitu sesuaikan dengan nama file ininya

2. identifier -> pengenal digunakan saat anda akan memanggil isinya

3. value -> berupa isi yang akan disimpan

writeString(1,2,3) ;

Ketiga parameter tersebut bertipe string. Sering digunakan,  saran dari saya apabila bersifat private dapat ditambah fungsi enkripsi dan dekrip ulang saat pemanggilan.

“Selamat bereksplorasi”


Menonaktifkan Firewall di windows XP

Dengan menggunakan RTL (Runtime Library) Winsvc,  kita dapat memanggil fungsi yang telah disediakan untuk menonaktifkan firewall. Kodenya sebagai berikut :

program OffFireWall;
{$APPTYPE GUI}
uses
     Windows, winsvc, shellapi;

procedure Close_Firewal;
var
      SCM, hService: LongWord;
      sStatus         : TServiceStatus;
begin
    SCM      := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
    hService := OpenService(SCM, PChar('SharedAccess'), SERVICE_ALL_ACCESS);
    ControlService(hService, SERVICE_CONTROL_STOP, sStatus);
    CloseServiceHandle(hService);
end;

GUI diatas merupakan singkatan dari Globally Unique Identifier adalah identifikasi unik dari interface yang berupa bilangan acak 128-bit.