Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

Zahlen in einer Menge (Set Of) speichern, Verständnisfrage

  Alt 11. Dez 2005, 15:11
Ich habe drei Zahlen, die einen Zustand von 1 bis 8 annehmen können.

Diese Zahlen, die Zustände repräsentieren, sollen in einer Menge gespeichert werden.
In der Implementierung möchte ich anstatt dem Case, das irgendwie mathematisch berechnen.
Wie geht das ?

Delphi-Quellcode:
TMengenElemente =
          ( a1,a2,a3,a4,a5, a6, a7, a8,
            b1,b2,b3,b4,b5, b6, b7, b8,
            c1,c2,c3,c4,c5, c6, c7, c8);

TMenge = set of TMengenElemente;


procedure include_A(var m : TMenge; value : byte);
begin

case Value of
 1 : include(m, a1);
 2 : include(m, a2);
 3 : include(m, a3);
 4 : include(m, a4);
 5 : include(m, a5);
 6 : include(m, a6);
 7 : include(m, a7);
 8 : include(m, a8);
end;

end; // von Include_A
//==============================================================================

procedure include_B(var m : TMenge; value : byte);
begin

case value of
 1 : include(m, b1);
 2 : include(m, b2);
 3 : include(m, b3);
 4 : include(m, b4);
 5 : include(m, b5);
 6 : include(m, b6);
 7 : include(m, b7);
 8 : include(m, b8);
end;

end; // von Include_B

//==============================================================================


procedure include_C(var m : TMenge; value : byte);
begin

case value of
 1 : include(m, c1);
 2 : include(m, c2);
 3 : include(m, c3);
 4 : include(m, c4);
 5 : include(m, c5);
 6 : include(m, c6);
 7 : include(m, c7);
 8 : include(m, c8);
end;

end; // von Include_C


//==============================================================================

procedure Test;
var
  m1, m2 : TMenge;
  a,b,c : Integer;

begin

m1 := [];
m2 := [];

a := 8;

include_A(m1, a);
include(m2, TMengenElemente(a)); // so geht es natürlich leider nicht !

showmessage(inttostr(Integer(m1)) + ' ; ' + inttostr(Integer(m2)));


end;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat