Hallo Jens,
Zitat von
SirThornberry:
Dann müsste folgendes Beispiel eigentlich 3 ausgeben (weil me50 an dritter Stelle steht). Tatsächlich wird aber 50 ausgegeben weil nicht der Index von ord zurück gegeben wird sondern die Bytes des übergebenen Wertes werden als ordinaler Wert interpretiert. Folglich ein ganz normaler cast.
Man könnte es auch so interpretieren: me50 steht an der 51. Stelle, du wolltest aber nicht alle Werte mit einem Namen versehen:
Delphi-Quellcode:
type
TMyEnum = (me0, me1, me2, me50 = 50, me51);
var
MySet : set of TMyEnum;
begin
MySet := [me0..me51];
if (TMyEnum(42) in MySet) then
ShowMessage ('surprise');
end;
Gruß Hawkeye