Hallo zusammen,
ich habe folgendes Problem:
Das kleine Rotkäpchen packt ihren Korb mit Lebensmitteln für ihre Großmutter zur Verfügung stehen ihr folgende Lebensmittel:
Delphi-Quellcode:
type
TLebensmittel = (Moehren, Erbsen, Kartoffeln, Tomaten, Erdnuesse, Aepfel, Birnen, Banananen, Annanas, Sahnetorten, Fruchtkuchen, Lebkuchen, Spekulatius);
TKorb = set of TLebensmittel;
Soweit ist alles schön und gut
Jetzt möchte ich ihr aber sagen können, packe nur Obst, Gemüse oder nur Backwaren ein.
Dazu bin ich bisher so vorgegangen:
Delphi-Quellcode:
type
TLebensmittelgruppen = (Obst, Gemuese, Backwaren)
var
FKorb : TKorb;
impelmentation
procedure packeKorbEin(AGruppe : TLebensmittelgruppen );
begin
case AGruppe of
Obst: begin
FKorb := FKorb + Aepfel, Birnen, Banananen, Annanas;
end;
Gemuese: begin
FKorb := FKorb + Moehren, Erbsen, Kartoffeln, Tomaten;
end;
Backwaren: begin
FKorb := FKorb + Sahnetorten, Fruchtkuchen, Lebkuchen, Spekulatius;
end;
end;
end;
Da Rotkäpchen aber sehr vergässlich ist, guckt sie noch einmal nach ob noch alles da ist:
Delphi-Quellcode:
procedure guckeInKorb;
var neSache : TLebensmittel;
begin
for neSache in FKorb do begin
case neSache of
Aepfel, Birnen: ShowMessage('Heimische Früchte hab ich!');
Banananen, Annanas: ShowMessage('Exotische Früchte hab ich!');
Moehren, Erbsen, Kartoffeln: ShowMessage('Gemüse hab ich!');
Tomaten: ShowMessage('Tomaten aus dem eigenen Garten hab ich!');
Sahnetorten, Fruchtkuchen, Lebkuchen, Spekulatius: ShowMessage('Sachen die dick machen hab ich!');
else: ShowMessage('Den andern Kram wie Erdnüsse und so hab ich auch!')
end;
end;
Wie ihr seht reicht ihr oft eine Sache von einer ganzen Gruppe von Sachen. Daher will sie danach nicht mehr danach suchen müssen, Äpfel und Birnen sehen ja auch ähnlich aus. Darum packt sie das Obst einfach aus dem Korb heraus ... und genau das will nicht klappen:
Delphi-Quellcode:
type
THeimischesObst = (Aepfel, Birnen);
TExotischesObst = (Bananen, Annanas);
TGemuese = (Moehren, Erbsen, Kartoffeln);
// usw.
implementation
procedure guckeInKorb;
var neSache : TLebensmittel;
begin
for neSache in FKorb do begin
case neSache of
THeimischesObst : begin
FKorb = FKorb - THeimischesObst;
ShowMessage('Heimische Früchte hab ich!');
end;
TExotischesObst :begin
FKorb = FKorb - TExotischesObst ;
ShowMessage('Exotische Früchte hab ich!');
end;
TGemuese :begin
FKorb = FKorb - TGemuese ;
ShowMessage('Gemuese hab ich!');
end;
Tomaten: ShowMessage('Tomaten aus dem eigenen Garten hab ich!');
TGebaeck: begin
FKorb = FKorb - TGebaeck;
ShowMessage('Gebäck hab ich!');
end;
else: ShowMessage('Den andern Kram wie Erdnüsse und so hab ich auch!')
end;
end;
Das Problem daran ist er versteht nicht das das Teilmengen sind. Kann mir jemand erklären wie das in Delphi geht? Hier in dem Beispiel habe ich jetzt die Typen genommen, es bringt auch nix wenn ich davon "Objekte" anlege.
Das
hier habe ich mir angeguckt bringt mich aber nicht sonderlich weiter.
Vielen Dank,
Tobias