AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Übungsprogramm "Kinokarten"
Thema durchsuchen
Ansicht
Themen-Optionen

Übungsprogramm "Kinokarten"

Ein Thema von EdAdvokat · begonnen am 8. Dez 2016 · letzter Beitrag vom 16. Jan 2017
Antwort Antwort
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Übungsprogramm "Kinokarten"

  Alt 19. Dez 2016, 17:27
Danke nahpets, sehe ich mir sofort an - gefällt mir gut.
Habe empfehlungsgemäß ein Enum gebildet:
...
implementation

{$R *.dfm}

uses ABOUT;

type TRang = (Rang1=15, Rang1erm=14, Rang2=13, Rang2erm=12, Rang3=10, Rang3erm=9);
var Rang: TRang;

const {Rang1 = 15;
Rang1erm = 14;
Rang2 = 13;
Rang2erm = 12;
Rang3 = 10;
Rang3erm = 9; }
PlGes = 100;
frPlR1Vorg = 20;
frPlR2Vorg = 30;
frPlR3Vorg = 50;...

nun will ich mit dem Enumtyp eine Multiplikation ausführen und den Preis für Rang 1 zu berechnen, doch es wird
eine Fehlermeldung ausgegeben:
[dcc32 Fehler] uKinokarten.pas(227): E2015 Operator ist auf diesen Operandentyp nicht anwendbar

procedure TKinokarten.BerechnePreisR1; //Preis R1 berechnen
begin
if Form1.ckbxR1.Checked then PreisR[1]:=Karten[1] * Rang1erm
else if not Form1.ckbxR1.checked then
PreisR[1]:= Karten[1] * Rang[1]; //Rang1;
end;

Was mache ich falsch? Gehe ich mit Rang[2] ins Rennen, also mit dem Ordinalwert meckert er auch und will ein
array deklariert sehen, doch das ist ja nicht vorgesehen.
Mit den const-Werten hat alles geklappt!
Norbert
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Übungsprogramm "Kinokarten"

  Alt 19. Dez 2016, 18:04
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.
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Übungsprogramm "Kinokarten"

  Alt 19. Dez 2016, 20:03
Danke Stefan, das hat geklappt. Nun muss ich nur noch die Trennung TForm1 und TKinokarten vollziehen.
Da muss ich mir noch was einfallen lassen. Nochmals vielen Dank!
Norbert
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Übungsprogramm "Kinokarten"

  Alt 20. Dez 2016, 08:26
Man muss bei den Enums dieser Art nur aufpassen, dass nicht irgendwann mal der Preis der ermässigten Kategorie 1 der selbe ist wie die normale Kategorie 2. Da könnte man eher sowas machen:

Delphi-Quellcode:
TRang = (Rang1,Rang1erm,Rang2,Rang2erm,Rang3,Rang3erm);

const Preisliste : array[0..6] of Double = (15,14,13,12,10,9)

//führt dann zu
PreisR[aRang] := Karten[aRang] * Preisliste[aRang]
Ralph
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Übungsprogramm "Kinokarten"

  Alt 20. Dez 2016, 08:40
Man könnte auch das enum als Array-Enumerator verwenden

const Preisliste : array[Low(TRang)..High(TRang)] of Double = (15,14,13,12,10,9)
Sebastian
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Übungsprogramm "Kinokarten"

  Alt 20. Dez 2016, 17:38
Hallo zusammen, Dank Eurer Unterstützung und mit einiger Anstrengung habe ich das Programm in eine "vorsichtige Angebotsphase" versetzt und hoffe auf wohlwollende Kritik an meinen bescheidenen Künsten. Ich danke nochmals all jenen Usern, die mir weiter geholfen haben. Es gibt auch noch eine Variante, in der ich das Prog. in 2 units geteilt habe (Hauptformular und Kartenberechnung). Ich hoffe alle Fehleingabemöglichkeiten verhindert zu haben.
Angehängte Dateien
Dateityp: zip Kinokarten_oop51.zip (861,3 KB, 5x aufgerufen)
Norbert
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Übungsprogramm "Kinokarten"

  Alt 21. Dez 2016, 17:32
Hallo zusammen, es kann doch nicht sein, dass die jetzige Fassung wirklich schon annähernd perfekt ist - oder? Ich reiche nunmehr die geteilte Variante zur Kritik, denn die ist sicher nicht perfekt, denn mit der vorgenommenen Teilung bin ich selbst nicht so ganz glücklich, kann aber nicht feststellen was und wo ich etwas anders machen müßte. Es funktioniert jedoch so wie die vorhierige Variante. Für Tipps wäre ich dankbar.
Angehängte Dateien
Dateityp: zip Kinokarten5geteilt.zip (863,7 KB, 6x aufgerufen)
Norbert
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz