EnMan:=TPerEnglish.Create('Yu Jingbo',True,34, German);
German 是一个枚举类型的值,问题就出在这里


源码中并没有什么恶意的代码,显然是误报。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
Language = (English,French,German,Null);
TPerson = class
private
FName:String;
FSex:Boolean;
FAge:Integer;
FLanguage:Language;
protected
property PName:String read FName write FName;
property PSex:Boolean read FSex write FSex default True;
property PAge:Integer read Fage write Fage;
procedure GetLanguage;virtual;abstract;
public
constructor Create();overload;
destructor Destory; overload;
end;
TPerEnglish = class(TPerson)
private
FLang:Language;
function GetLang:Language;
protected
public
constructor Create();overload;
constructor Create(Name:String;Sex:Boolean;Age:Integer; lang:Language);overload;
property PLanguage:Language read FLang;
procedure GetLanguage;override;
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var EnMan:TPerEnglish;
begin
EnMan:=TPerEnglish.Create('Yu Jingbo',True,34, German);
Caption:=EnMan.PName;
EnMan.GetLanguage;
end;
{ TPerson }
constructor TPerson.Create;
begin
end;
destructor TPerson.Destory;
begin
inherited;
end;
{ TPerEnglish }
constructor TPerEnglish.Create;
begin
PName:='Esan';
PSex:=True;
PAge:=34;
Flang:=French;
end;
constructor TPerEnglish.Create(Name: String; Sex: Boolean; Age: Integer; lang:Language);
begin
PName:=Name;
PSex:=Sex;
PAge:=Age;
Flang:=lang;
end;
function TPerEnglish.GetLang: Language;
begin
Result:=FLang;
end;
procedure TPerEnglish.GetLanguage;
begin
//inherited;
case PLanguage of
English:showmessage(PName + ' is a English Person!');
French:showmessage(PName + ' is a French Person!');
German:showmessage(PName + ' is a German Person!');
else showmessage(PName + ' ''s language is unkonwn!');
end;
end;
end.
附件: 26.rar (2010-8-28 23:13:55, 171.52 K)
该附件被下载次数 217
用户系统信息:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)