Hallo Dolly
gib nicht auf
.
Die Vorschläge sind ja alle mehr als brauchbar.
Hier noch ein paar Funktionen, welche nützlich sein könnten...
allefaelle zählt alle möglichen Fälle (0..63) auf
niv_in_n prüft, ob ein Niveau im "Fall" n enthalten ist
niv_str wandelt ein Element in einen String um
nivset_str wandelt eine Menge in einen String um
Delphi-Quellcode:
uses System.TypInfo;
type
TNiveau = (nA, nB, nC, nD, nE, nF);
TNiveauSet = set of TNiveau;
function getNiveauSet( n : byte ) : TNiveauSet;
begin
(*
alle fälle aufzählen:
Result := [];
if n and 1 = 1 then Result := Result + [nA];
if n and 2 = 2 then Result := Result + [nB];
if n and 4 = 4 then Result := Result + [nC];
if n and 8 = 8 then Result := Result + [nD];
if n and 16 = 16 then Result := Result + [nE];
if n and 32 = 32 then Result := Result + [nF];
*)
// oder einfacher so:
Result := TNiveauSet( n );
end;
function niv_str( niv : TNiveau ) : string;
begin
Result := GetEnumName(typeinfo(TNiveau),ord(niv));
end;
function nivset_str( nivset : TNiveauSet ) : string;
var niv : TNiveau;
begin
Result := '';
for niv := nA to nF do
if niv in nivset then
Result := Result + niv_str( niv ) + ' ';
end;
function niv_in_n( niv : TNiveau; n : byte ) : boolean;
begin
Result := niv in getNiveauSet( n );
end;
function fallnummer( n : byte ) : string;
var nivset : TNiveauSet;
begin
nivset := getNiveauSet( n );
Result := nivset_str( nivset );
end;
function allefaelle : string;
var
i: Integer;
hs : string;
begin
hs := '';
for i := 0 to 63 do
hs := hs + i.ToString + ' ' + fallnummer( i ) + #13#10;
Result := hs;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(allefaelle);
end;