unit UnitMain;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, UnitPublic, UnitIDest; {$I IncDemo.inc} // 用于Inc方法的宏指令,如果不是用该方法可去掉上面那行
type TfmMain = class(TForm) Memo1: TMemo; btnUseAbstract: TButton; btnUseReference: TButton; btnUseInterface: TButton; btnUseInc: TButton; procedure btnUseAbstractClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnUseInterfaceClick(Sender: TObject); procedure btnUseReferenceClick(Sender: TObject); procedure btnUseIncClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var fmMain: TfmMain; function GetNewspaper: TNewspaper; external 'ProDLLDemo.dll'; function GetCircle: ICircle; external 'ProDLLDemo.dll'; function GetBall: TBallClass; external 'ProDLLDemo.dll'; function GetCar: TCar; external 'ProDLLDemo.dll';
implementation
{$R *.dfm}
procedure TfmMain.FormCreate(Sender: TObject); begin memo1.Lines.Clear; end;
// abstract, virtual 方法示例 procedure TfmMain.btnUseAbstractClick(Sender: TObject); var NewspaperObj: TNewspaper; Info: pchar; i: integer; begin NewspaperObj := GetNewspaper; if NewspaperObj = nil then memo1.Lines.Add('Create newspaper object failed!') else begin try GetMem(Info, 255); i := NewspaperObj.Read(Info); memo1.Lines.Add('Create newspaper object successed!'); memo1.Lines.Add('read : ' + Info + ' return code : ' + inttostr(i)); finally FreeMem(Info); NewspaperObj.Free; end; end; end;
// interface方法示例 procedure TfmMain.btnUseInterfaceClick(Sender: TObject); var CircleObj: ICircle; Info: pchar; i: integer; begin CircleObj := GetCircle; if CircleObj = nil then memo1.Lines.Add('Create circle object failed!') else begin try GetMem(Info, 255); i := CircleObj.Scroll(Info); memo1.Lines.Add('Create circle object successed!'); memo1.Lines.Add('scroll : ' + Info + ' return code : ' + inttostr(i)); finally FreeMem(Info); CircleObj := nil; end; end; end;
// class reference方法示例 procedure TfmMain.btnUseReferenceClick(Sender: TObject); var BallObj : TIBall; Info: pchar; i: integer; begin BallObj := GetBall.Create; if BallObj = nil then memo1.Lines.Add('Create ball object failed!') else begin try GetMem(Info, 255); i := BallObj.Play(Info); memo1.Lines.Add('Create ball object successed!'); memo1.Lines.Add('play : ' + Info + ' return code : ' + inttostr(i)); finally FreeMem(Info); BallObj.Free; end; end; end;
// .inc文件方法示例 procedure TfmMain.btnUseIncClick(Sender: TObject); var CarObj : TCar; Info: pchar; i: integer; begin CarObj := GetCar.Create; if CarObj = nil then memo1.Lines.Add('Create car object failed!') else begin try GetMem(Info, 255); i := CarObj.Run(Info); memo1.Lines.Add('Create car object successed!'); memo1.Lines.Add('car : ' + Info + ' return code : ' + inttostr(i)); finally FreeMem(Info); CarObj.Free; end; end; end;
end.
|