828
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TCsdner = class(TObject)
private
FName: string;
FLevel: string;
FScore: Integer;
public
constructor Create(const AName: string; const ALevel: string = 'low'; const AScore: Integer = 0); virtual;
class function IsPureMan: Boolean;
procedure GiveScore(const AScore: Integer); virtual;
procedure RecvScore(const AScore: Integer); virtual;
published
property Score: Integer read FScore stored False default 0;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
const
SCORE: Integer = 100;
var
LZ, Me: TCsdner;
begin
if TCsdner.IsPureMan then
ShowMessage('Pure Man!');
LZ := TCsdner.Create('LZ', 'high', 10000);
Me := TCsdner.Create('Me');
try
LZ.GiveScore(SCORE);
Me.RecvScore(SCORE);
ShowMessageFmt('LZ: %d; Me: %d', [LZ.Score, Me.Score]);
finally
Me.Free;
LZ.Free;
end;
ExitThread(0);
end;
{ TCsdner }
constructor TCsdner.Create(const AName, ALevel: string;
const AScore: Integer);
begin
FName := AName;
FLevel := ALevel;
FScore := AScore;
end;
class function TCsdner.IsPureMan: Boolean;
asm
MOV @Result, True
end;
procedure TCsdner.GiveScore(const AScore: Integer);
asm
SUB Self.FScore, EDX
end;
procedure TCsdner.RecvScore(const AScore: Integer);
asm
ADD Self.FScore, EDX
end;
end.