hab grad
dort drüben noch was Nettes gefunden...
jetzt ist der Code etwas kürzer und übersichtlicher:
Delphi-Quellcode:
Uses Types, TypInfo;
Function GetClassPropList(C: TClass): TStringDynArray;
Var L: PPropList;
i, i2, i3: Integer;
Begin
Result :=
nil;
If not Assigned(C)
Then Exit;
L :=
nil;
i := 0;
Try
i := GetPropList(C.ClassInfo, L);
C := C.ClassParent;
For i2 := i - 1
downto 0
do
If IsPublishedProp(C, L[i2].
Name)
Then L[i2] :=
nil;
i3 := 0;
For i2 := i - 1
downto 0
do
If Assigned(L[i2])
Then Inc(i3);
SetLength(Result, i3);
For i2 := i - 1
downto 0
do
If Assigned(L[i2])
Then Begin
Dec(i3);
Result[i3] := L[i2].
Name;
End;
Finally
If Assigned(L)
Then FreeMem(L);
End;
End;
und noch eine ganz Kurze/Übersichtliche ohne vorreservieren des Arrays:
Delphi-Quellcode:
Function GetClassPropList(C: TClass): TStringDynArray;
Var L: PPropList;
i, i2, i3: Integer;
Begin
Result := nil;
If not Assigned(C) Then Exit;
L := nil;
Try
i := GetPropList(C.ClassInfo, L);
For i2 := 0 to i - 1 do
If not IsPublishedProp(C.ClassParent, L[i2].Name) Then Begin
i3 := Length(Result);
SetLength(Result, i3 + 1);
Result[i3] := L[i2].Name;
End;
Finally
If Assigned(L) Then FreeMem(L);
End;
End;
Aber ohne nachzusehn, würd ich einfach mal behaupten, die alte/allererste Funktion ist dagegen immerhin schneller