Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
739 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Integer in Set laden

  Alt 16. Okt 2019, 22:57
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;
Michael Gasser
  Mit Zitat antworten Zitat