Pemrograman API Pada Delphi

Rifqi's Blog - Pemrograman API , API (
Application Programming Interface ) adalah Sebuah bahasa dan format pesan yang digunakan oleh sebuah aplikasi untuk berkomunikasi dengan : sistem operasi, DBMS (
Database Management System), protokol komunikasi, Hardware atau program lain. API digunakan melalui pemanggilan fungsi API pada program. API menyediakan fungsi untuk menghubungkan dengan subroutine yang diperlukan pada eksekusi program.

Untuk lebih memperjelas tentang pemrogaman api berikut beberapa pertanyaan yang saya kutip dari UTS pemrogaman API

  1. Sebutkan alasan kita menggunakan library win32 API , dan mengapa kita perlu mempelajarinya
Karena dengan menggunakan library win32 API, maka dimungkinkan program atau aplikasi ynag dibuat akan menjadi lebih
  1. RINGAN
Karena perbandingan memori yang digunakan apabila kita menggunakan souce code berbasis win 32 API dan juga source code biasa sangat jauh perbedaanya. Dengan adanya library win 32 API kita dapat menggunakan memori yang telah disediakan secara efisien
  1. CEPAT
Karena penggunaan resource sharing (memori) dapat dilakukan secara efektif maka eksekusi program dapat dilakukan dengan cepat.
  1. LENGKAP
Dengan menggunakan win 32 API maka kita lebih mengetahui beberapa fuction yang tidak ada did dalam fuction delphi biasa . dan juga funsi library win 32 API selalu berkembang setiap saat kira kira saat ini library Win 32 API mempunyai 15 000 fuctions
  1. Berikan contoh bagaimana cara mengimport DLL dari library win32 API yang belum diimport di source code delphi ke dalam source code delphi kita
Fungsi win32 API sangat banyak fungsi fungsi ini meliputi hampir segala sesuatu yang bisa dilakukan windows.sehingga walaupun delphi berusaha mengimport semuanya, masih banyak fungsi fungsi win32 API yang belum terimport oleh delphi . Oleh karena itu kita bisa mengimport fungsi win32 API langsung dari DLL windowsnya.
Contoh import fungsi win32 API dari DLL :



Semua fungsi tersebut ada di DLL dan kita ketahui maka semua fungsi dalam DLL tersebut bisa diimport dan digunakan oleh aplikasi delphi kita. Untuk diketahui directive stdcall harus ditambahkan ke dalam prototype fungsi.
  1. Buat langkah langkah membuat form langsung dengan win32 API dan berikan contoh source code di delphi
Step dasar membuat window menggunakan fungsi win 32 API adalah :
Proses yang detail tetapi jelas, ada tiga langkah yang perlu kita lakukan, yaitu
  1. Class windows yang akan dibuat harus diregisterkan.jika kita membuat window berdasarkan class yang sudah didefinisikan dahulu ,step ini bisa diabaikan.
  2. Window dibuat dengan salah satu fungsi pembuatan window
  3. Akhirnya window harus di display di layar, step ini bisa diabaikan jika flag WS_VISIBLE digunakan pada parameter dwstyle
Source code di delphi :

unit frmUtama;
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}
{Register the Window Class}
function RegisterClass: Boolean;
var
WindowClass: TWndClass;
begin
{setup our new window class}
WindowClass.Style := CS_HREDRAW or CS_VREDRAW; {set the class styles}
WindowClass.lpfnWndProc := @DefWindowProc; {point to the default window procedure}
WindowClass.cbClsExtra := 0; {no extra class memory}
WindowClass.cbWndExtra := 0; {no extra window memory}
WindowClass.hInstance := hInstance; {the application instance}
WindowClass.hIcon := 0; {no icon specified}
WindowClass.hCursor := 0; {no cursor specified}
WindowClass.hbrBackground := COLOR_WINDOW; {use a predefined color}
WindowClass.lpszMenuName := nil; {no menu}
WindowClass.lpszClassName := 'TestClass'; {the registered class name}
{now that we have our class set up, register it with the system}
Result := Windows.RegisterClass(WindowClass) <> 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hWindow: HWND;
begin
{Step 1: Register our new window class}
if not RegisterClass then
begin
ShowMessage('RegisterClass failed');
Exit;
end;
{Step 2: Create a window based on our new class}
hWindow := CreateWindowEx(0, {no extended styles}
'TestClass', {the registered class name}
'New Window', {the title bar text}
WS_OVERLAPPEDWINDOW, {a normal window style}
CW_USEDEFAULT, {default horizontal position}
CW_USEDEFAULT, {default vertical position}
CW_USEDEFAULT, {default width}
CW_USEDEFAULT, {default height}
0, {no owner window}
0, {no menu}
hInstance, {the application instance}
nil {no additional information}
);
{Step 3: If our window was created successfully, display it}
if hWindow <> 0 then
begin
ShowWindow(hWindow, SW_SHOWNORMAL);
UpdateWindow(hWindow);
end
else
begin
ShowMessage('CreateWindow failed');
Exit;
end;
end;
end.

  1. Apa yang dimaksud dengan windows message ?dan berikan contoh
Windows message adalah komunikasi antara windows (dalam hal ini sistem operasi) dengan aplikasi aplikasi anda.dan juga didalam konunikasi antara dua buah aplikasi anda baik aplikasi yang sma ataupun berbeda.
Bahkan "tanpa sepengetahuan Anda (dalam hal ini computer user)" suatu windows message sedang dipost dan ditangani/ dihandle oleh form form dalam aplikasi user. Sebagai contoh, ketika user menutup form dalam suatu aplikasi,maka pesan WM_CLOSE akan dikirim ke window/form sehingga form akan tertutup.dan juga dalam melakukan komunikasi diantara 2 apilkasi yang berbeda
Source code di delphi :

interface
TMsgReceiver = class(TObject)
private
  fMsgHandlerHWND : HWND;
  procedure WndMethod(var Msg: TMessage);
public
  constructor Create;
  destructor Destroy; override;
end;
implementation
constructor TMsgReceiver.Create;
begin
  inherited Create;
  fMsgHandlerHWND := AllocateHWnd(WndMethod);
end;
destructor TMsgReceiver.Destroy;
begin
  DeallocateHWnd(fMsgHandlerHWND);
  inherited;
end;
procedure TMsgReceiver.WndMethod(var Msg: TMessage);
begin
  if Msg.Msg = WM_MY_UNIQUE_MESSAGE then
  begin
    //do something
  end
  else
    Msg.Result := DefWindowProc(fMsgHandlerHWND, Msg.Msg, Msg.wParam, Msg.lParam);
end;

Dalam prosedur WndMethod (prosedur window untuk hidden window) Anda menangani /handle semua pesan Anda yang anda inginkan.
Untuk semua mesages yang lain lain memanggil prosedur DefWindowProc sangat diperlukan untuk menjamin default untuk setiap pesan pada kode yang tidak anda proses di source code

  1. Apa yang dimaksud dengan :
  1. Heap
  2. Virtual Memory
  3. Perintah virtual Allocation
  4. Perintah Virtual ReAlloc
  5. Perintah Global Memory Status
  1. Heap adalah : fungsi heap digunakan untuk pengalokasian memori yang kecil sehingga pengalosian memori dapat dikerjakan secara efisien.pemnaggilan heap adalah dengan printah API heapAlloc.Penggunaan heapAlloc jauh lebih cepat dan efisien daripada penggunann virtualAlloc.setiap proses memiliki heap default , tetapi aplikasi bisa mengalokasikan heap tambahan.tiap heap memiliki handle dan aplikasi bisa mendapatkan handle tersebut dengan perintah API GetProcessHeap
  2. Virtual Memory : adalah sebuah mekanisme yang digunakan oleh aplikasi untuk menggunakan sebagian dari memori sekunder seolah-olah ia menggunakannya sebagai RAM fisik yang terinstal di dalam sebuah sistem. Mekanisme ini beroperasi dengan cara memindahkan beberapa kode yang tidak dibutuhkan ke sebuah berkas di dalam hard drive yang disebut dengan swap filepage file atau swap partition.
fungsi virtual memory digunakan untuk mengalokasikan dan mengatur buffer memori yang besar.
  1. Perintah virtual allocation : untuk mengalokasikan virtual memory , digunakan perintah ViryualAlloc.Untuk diingat bahwa perintah VirtualAlloc ini adalah kelipatan 4 kb, jika ukuran tsb terlalu besar maka menggunakan heapAlloc.walaupun virtualAloc sangat aman digunakan karena menggunakan memori virtual(RAM +HD).tetapi akan menjadi lambat karena bisa jadi membuat proses swapping.
  2. Perintah virtualReallocation : perintah untuk membebaskan memori yang telah dialokasikan sebelumnya(pada saat perintah Virtual Allocation) , setelah memori tersebut selesai digunakan
  3. Perintah GlobalMemoryStatus : adalah perintah untuk melakukan pengecekan berapa besar sisa memori yang masih dapat digunakan atau dipakai .

1 comments:

Ada Kesimpulannya ngak??
widyawatisesejukpagi.blogspot.com
Visit It !!

Reply

Posting Komentar

Para pengurus Rifqi's Blog tidak selalu online untuk memantau komentar yang masuk, Jadi diharapkan berikan komentar Anda dengan pantas dan layak untuk dikonsumsi oleh publik. No SARA, SPAM dan Sejenisnya

Iklan Banner