简单问题:如何判断一个set中有几个元素?(28分)

  • 主题发起人 主题发起人 base7
  • 开始时间 开始时间
B

base7

Unregistered / Unconfirmed
GUEST, unregistred user!
r.t.
有相关函数吗?
 
Length(aset) 试试

-----
http://www.8421.org
 
呵呵, incompatible types
是set呀,不是数组
 
假设此set为char的集合
var i:char;
count:=0;
for i:='a' to 'z' do
if i in YOURSET then count:=count+1;
.....
 
太阳火 的办法是可行的:
function CountCharSet(ASet: TSysCharSet): Integer;
var
c: Char;
begin
Result := 0;
for c := Low(Char) to High(Char) do
if c in ASet then
Inc(Result);
end;

不过如果这个集合属于一个对象的话,就方便点,传入对象和集合属性的字符串名:
function CountSetOfClass(Obj: TObject
SetName: string): Integer;
var
TypInfo: PTypeInfo;
TypData: PTypeData;
SetStr: string;
SetList: TStringList;
begin
TypInfo := TypeInfo(aaa);
TypData := GetTypeData(typinfo);
SetList := TStringList.Create;
SetStr := GetSetProp(Obj, SetName);
Result := ExtractStrings([','], [], PChar(SetStr), SetList);
SetList.Free;
end;
 
接受答案了.
 
后退
顶部