Wednesday, April 4, 2012

Record di Delphi

Record dapat dikatakan sebagai sebuah obyek di Delphi, semacam variabel yang memiliki variabel. Seperti Button yang memiliki caption atau edit yang memiliki text, kita dapat membuat sebuah obyek yang memiliki variabel sendiri.


Berikut adalah contoh program menggerakkan sebuah kotak (menggunakan shape). Kita membuat record baru bernama tkotak yang memiliki variabel x, y, vx, vy, ax, ay. Variabel kotak merujuk pada record tkotak.


Tombol jika diklik akan menjalankan perintah pada prosedur proses. Prosedur proses adalah metode Euler untuk mengupdate posisi dan kecepatan kotak berdasarkan posisi dan kecepatan awal.







Kode lengkapnya adalah sebagai berikut


unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Shape1: TShape;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
  tkotak=record
  x,y,vx,vy,ax,ay:real;
  end;
var
  Form1: TForm1;
  jalan:boolean;
  kotak:tkotak;
  dt:real;

implementation

{$R *.dfm}
procedure proses;
begin
  kotak.vx:=kotak.vx+kotak.ax*dt;
  kotak.x:=kotak.x+kotak.vx*dt;
  form1.Shape1.Left:=round(kotak.x);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  button1.Caption:='jalan';
  jalan:=false;
  kotak.x:=0;
  kotak.y:=0;
  kotak.vx:=5;
  kotak.vy:=0;
  kotak.ax:=10;
  kotak.ay:=0;
  dt:=0.1;
  shape1.Left:=round(kotak.x);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  jalan:=not(jalan);
  if jalan=true then button1.Caption:='stop' else button1.Caption:='jalan';
  while jalan=true do begin
    proses;
    application.ProcessMessages;
    sleep(100);
  end;
end;

end.