Hallo zusammen,
habe gerade mal wieder ein Problem bzgl. meiner Log-Klasse. Ich hätte gerne folgendes:
Delphi-Quellcode:
type
TTestEnum = (teOne, teTwo, teThree {...});
TTestEnumSet = set of TTestEnum;
var
a : TTestEnum;
b : TTestEnumSet;
begin
a := teOne;
TLog.Add(a); // -> liefert dann den String "teOne"
// DAS HIER MAL NICHT BEACHTEN!!!
//b := [teTwo, teThree];
//TLog.Add(b); // -> Liefert den String "[teTwo, teThree]"
end;
Das Problem hierbei ist ja, dass die Add-Methode keine Ahnung von TTestEnum hat, d.h. ich sollte diese generisch gestalten, was an sich ja kein Problem wäre. Jetzt kommt allerdings das
ABER: bei Generics gibts ja keine Einschränkung, dass ich eben nur Enumeration-Typen übergeben kann und somit funktioniert folgendes ja nicht:
Delphi-Quellcode:
uses
TypInfo;
procedure TLog.Add<T>(Value: T);
var
s : string;
begin
s := GetEnumName(TypeInfo(T), Integer(Value)); // <- [DCC Fehler] Project1.dpr(27): E2089 Ungültige Typumwandlung
{ ... }
end;
Habt ihr eine Idee, wie man das Dilemma umgehen kann?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)