Delphi-Quellcode:
TApEnumerations = class
public
class function EnumToStr<T>(const Value: T): String; static;
class function StrToEnum<T>(const Value: String): T; static;
class function SetToStr<T>(const Value: T): String; static;
class function StrToSet<T>(const Value: String): T; static;
end;
So, habe das ganze nun überarbeitet und um die Methoden
SetToStr<T>()
und
StrToSet<T>()
erweitert. Zudem habe ich hier nicht mehr den Anspruch die neue
RTTI zu nutzen, da diese ja nur die alte
RTTI-Methoden kapselt und so etwas langsamer ist -- klar, man kann hier drüber streiten, aber es soll hier um die Funktionalität gehen
Weiterhin habe ich den
record durch
class ersetzt, da ich wohl das Argument verstanden habe, warum ich hier eigentlich
class verwenden sollte.
In diesem Sinne, wettert drauf los
PS: Ich sollte noch sagen, dass StrToSet<T>() als Typen den set-Typen erwartet (z.B. TTestEnumSet) und als Parameter eine komma-separierte Aufzählung, die in eckigen Klammer platziert ist -- Beispiel:
'[taOne, taTwo, taThree]'
. (ist quasi die Umkehrfunktion von SetToStr<T> -- wer hätte es gedacht
)
-- Edit: Habe das ganze nun mal in eine
Unit gepackt und in den Anhang gesteckt. Dadurch wird der Beitrag dezent übersichtlicher.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)