//得到类的publish方法列表,刚刚写的,比较乱,不过大家可以玩玩
function ClassMethodNames(t:TClass): TStrings;
var
j,k:integer;
begin
k:=PInteger(PInteger(Integer(t) + vmtMethodTable)^)^ and $00FFFF;
j:=PInteger(Integer(t) + vmtMethodTable)^ + 2;
result:=TstringList.Create ;
while k>0 do
begin
result.Add(PShortString(j + 6)^);
k:=k-1;
j:= j+ Pinteger(j)^ and $00FFFF;
end;
end;
procedure GetDirectories(list: TlistView; Directory: string; Item: Tlistitem; IncludeFiles: boolean);
var
SearchRec: TSearchRec;
begin
list.Items.BeginUpdate;//准备更新
list.Items.Clear; //清空list内容
if Directory[length(Directory)] <> '\' then //判断路径
Directory := Directory + '\'; //设置路径
if FindFirst(Directory + '*.*',faDirectory,SearchRec) = 0 then begin
repeat
if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
begin
if (SearchRec.Attr and faDirectory > 0) then begin Item := list.Items.Add; //增加item
item.Caption:=SearchRec.Name;
item.ImageIndex:=6;
end;
GetDirectories(list,Directory + SearchRec.Name,Item,IncludeFiles);
end
else
if IncludeFiles then
if SearchRec.Name[1] <> '.' then
begin
item:=list.Items.Add;
item.Caption:=SearchRec.Name;
item.ImageIndex:=6;
end;
until FindNext(SearchRec) <> 0;
//FindClose(SearchRec);
end;
list.Items.EndUpdate;
end;