关于类中属性为什么不可以是数组?(80分)

  • 主题发起人 主题发起人 冰狐狸
  • 开始时间 开始时间

冰狐狸

Unregistered / Unconfirmed
GUEST, unregistred user!
代码:
[:(]
我在写程序时, 写了一个类,其中有一属性表示权限字,用32个整形数表示不同的权限,
所以我就想定义数组来存放,是用数组Array [0..31] of Integer存放;但是这个属性却不
能publish,只能在public下,而且当用流对当前类操作时存在该属性中的数据不能导入流;
我的类的定义为,
TRightArr = Array [0..31] of Integer;
TUserInfo = Class(TComponent)
private
...
FRights: TRightArr;

function GetRight(Index: Integer): Integer;
procedure PutRight(Right: Integer; Index: Integer);
public
constructor create;
distructor distory;
procedure LoadFromFile(FileName: string);
procedure SaveToFile(FileName: string);
....
property Rights[Index: Integer]: Integer Write PutRight read GetRight;
...
publish

end;
 
这个东东用集合多好来着!
 
ERights=(canread,canAppend,canModify);

TRights -set of ERights;

property Rights:TRights;
 
>>用32个整形数表示不同的权限
不会吧,权限有这么复杂吗?
我认为可以参考Windows控件的Style或者文件的属性——他们都是用1个32bit的无符号整
型数存放是否具有某种权限的。

eg:
const
Right_Read= $00000001;
Right_Write= $00000002;
Right_Update=$00000004;
Right_Create=$00000008;
...
TUserInfo = Class(TComponent)
private
FRights: Integer;
public
property Rights:read FRights;
end;
 
public 其实就是类的公共属性,publish是将它发布为在object inspector中可见的属性。
因为你发布的是数组,当然不能在发布在Publish中了!

当然,你可能用集合来发布,如wk_knife所说的:)
 
多人接受答案了。
 
后退
顶部