Hier könnte man eventuell sowas machen: (Achtung, nur hingedaddelt und nicht getestet)
Delphi-Quellcode:
type
TRang = (Rang1=15, Rang1erm=14, Rang2=13, Rang2erm=12, Rang3=10, Rang3erm=9);
TKinokarten = class
private
Karten : array[TRang] of integer;
gekaufteKarten : array[TRang] of integer;
freiePlR : array[TRang] of integer;
gekaufteKartenGesamt,
freiePlGesamt : integer;
PreisR : array[TRang] of Currency;
ZwSu : Currency;
MWSt : Currency;
Preis : Currency;
...
// Klappt so mit einer Prozedur für alle Ränge.
procedure TKinokarten.BerechnePreisFuerBeliebigenRang(aRang : TRang);
begin
PreisR[aRang] := Karten[aRang] * Ord(aRang);
end;
Bekommt man jetzt weitere Ränge dazu oder irgendwelche weiteren Ermäßigungen ..., so muss man nur den Typ tRang erweitern, der Rest läuft automatisch.