// Ympyra2.pas // Kirjoittanut Samu Kohtala Delphi kolmosella vuonna 1998 // LuK-tutkielman C++ Builderin ja Delphin yhteiskäyttö esimerkkilistaus // Käyttää ympyra2.dll nimisessä tiedostossa sijaitsevan luokan esiintymää // liittymällä virtuaaliseen metoditauluun. unit Ympyra2; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; // Tämä abstrakteista metodeista koostuva "tyhjä luokka" on apuväline // DLL-tiedostossa sijaitsevan oikean luokan käyttämiseen. // Huomaa että metodien esittelyjärjestyksellä on väliä. cYmpyra = class public procedure DeleteYmpyra stdcall; virtual; abstract; procedure AsetaXY(ix: integer; iy: integer) stdcall; virtual; abstract; procedure AsetaSade(ir: double) stdcall; virtual; abstract; function AnnaX: integer stdcall; virtual; abstract; function AnnaY: integer stdcall; virtual; abstract; function AnnaSade: integer stdcall; virtual; abstract; function LaskeAla: double stdcall; virtual; abstract; end; var Form1: TForm1; // DLL-tiedostossa sijaitsevan liittymäfunktion esittely. function GetCYmpyra: cYmpyra; stdcall; external 'YMPYRA2.DLL'; implementation {$R *.DFM} // Aliohjelma testaukseen. procedure TForm1.Button1Click(Sender: TObject); begin with GetCYmpyra do try AsetaSade(20.1); AsetaXY(50,50); label1.Caption := IntToStr(Trunc(LaskeAla)); finally DeleteYmpyra; end; end; end.