Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Pizzaservice (https://www.delphipraxis.net/81771-pizzaservice.html)

cobralord 3. Dez 2006 16:58


Pizzaservice
 
Hallo,
ich möchte einen Pizzaservicerechner programmieren, habe jetzt aber folgendes Problem:

Delphi-Quellcode:
const Salami=1 ; Käse=0.8 ; Schinken=1.2 ; Ananas=1.3 ; Sardellen=1.5 ;
 Klein=1.5 ; Groß=2 ; Riesen=2.7 ; Family=3.5;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
 var Preis:double;

begin
if checkbox1=cbchecked then Preis + Salami
else Preis + 0;
label1.Caption:='Der momentane Preis ist' + Preis;
if checkbox2=cbchecked then Preis + Käse;
label1.caption:='Der momentane Preis ist' + Preis;


end;
Ich kriege eine Fehlermeldung: 'Operator ist auf diesen Operandentyp nicht anwendbar.'
Dabei ist ist die Zeile mit dem ersten 'if' rot hervorgehoben. Kann mir bitte jemand sagen was falsch ist?
Vielen Dank schon mal im Vorraus!!!

Balu der Bär 3. Dez 2006 17:01

Re: Pizzaservice
 
Delphi-Quellcode:
if checkbox1.checked then Preis + Salami

fwsp 3. Dez 2006 17:01

Re: Pizzaservice
 
Delphi-Quellcode:
Preis + Salami
das soll wahrscheinlich

Delphi-Quellcode:
Preis := Preis + Salami
heißen.

cobralord 3. Dez 2006 17:04

Re: Pizzaservice
 
@ Balu der Bär: Nein, das habe ich auch versucht und er unterschlängelt es von Anfang an.

@fwsp: Das hilft leider auch nicht.

Trotzdem vielen Dank!

igel457 3. Dez 2006 17:06

Re: Pizzaservice
 
Delphi-Quellcode:
const Salami=1 ; Käse=0.8 ; Schinken=1.2 ; Ananas=1.3 ; Sardellen=1.5 ;
 Klein=1.5 ; Groß=2 ; Riesen=2.7 ; Family=3.5;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Preis:double;

begin
  if checkbox1.checked then
    Preis := Preis + Salami;
  if checkbox2.checked then
    Preis := Preis + Käse;

  label1.caption:='Der momentane Preis ist' + Inttostr(Preis);
end;

cobralord 3. Dez 2006 17:07

Re: Pizzaservice
 
@ Balu der Bär:Sorry, ich habe den Code eben nicht richtig gelesen. Mit dem Punkt funktioniert es doch.
Entschuldigung :oops: :oops: :oops:

RWarnecke 3. Dez 2006 17:11

Re: Pizzaservice
 
Ich würde das ganze so schreiben :

Delphi-Quellcode:
const Salami=1 ; Käse=0.8 ; Schinken=1.2 ; Ananas=1.3 ; Sardellen=1.5 ;
Klein=1.5 ; Groß=2 ; Riesen=2.7 ; Family=3.5;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Preis:double;

begin
  Preis := 0;
  if checkbox1.checked then Preis := Preis + Salami
  else Preis := Preis + 0;
  label1.Caption:='Der momentane Preis ist' + Preis;
  if checkbox2.checked then Preis := Preis + Käse;
  label1.caption:='Der momentane Preis ist' + Preis;
end;

MikeS 3. Dez 2006 17:14

Re: Pizzaservice
 
Ich würde dann auch noch den Preis in String umwandeln. Ungefähr so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Preis:double;
    SPreis: string;

begin
      if checkbox1.Checked then
        Preis := Preis + Salami
      else
        Preis := Preis;

      str(Preis:2, SPreis);
      label1.Caption:='Der momentane Preis ist' + sPreis;

      if checkbox2.Checked then
        Preis := Preis + Kaese;
      str(Preis:2, SPreis);
      label1.caption:='Der momentane Preis ist' + SPreis;
end;

Sascha L 3. Dez 2006 17:16

Re: Pizzaservice
 
also

Delphi-Quellcode:
else Preis := Preis + 0;
ist ja wohl extrem überflüssig!! :D

cobralord 3. Dez 2006 17:16

Re: Pizzaservice
 
Vielen Dank an alle. So wie es RWarnecke und MikeS geschrieben haben funktioniert es. Vielen Dank an alle!! :thumb: :thumb:

ArmyMan 3. Dez 2006 17:17

Re: Pizzaservice
 
Zitat:

Zitat von RWarnecke
Ich würde das ganze so schreiben :

Delphi-Quellcode:
const Salami=1 ; Käse=0.8 ; Schinken=1.2 ; Ananas=1.3 ; Sardellen=1.5 ;
Klein=1.5 ; Groß=2 ; Riesen=2.7 ; Family=3.5;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Preis:double;

begin
  Preis := 0;
  if checkbox1.checked then Preis := Preis + Salami
  else Preis := Preis + 0;
  label1.Caption:='Der momentane Preis ist' + Preis;
  if checkbox2.checked then Preis := Preis + Käse;
  label1.caption:='Der momentane Preis ist' + Preis;
end;

Verstehe jetzt nicht ganz wieso du 0 zum Preis addierst??

Vorallem ist das Anpassen des Label1 völlig überflüssig.
Der Text wird so schnell nacheinander geändert dass man es ja eh nicht sieht.
Würd da ganz unten ein mal die caption setzten.

Greetz

cobralord 3. Dez 2006 17:21

Re: Pizzaservice
 
Ja, zuerst habe ich gedacht die Null wäre nötig und jetzt lasse ich sie der Übersicht halber stehen...

RWarnecke 3. Dez 2006 17:57

Re: Pizzaservice
 
Zitat:

Zitat von ArmyMan
Verstehe jetzt nicht ganz wieso du 0 zum Preis addierst??

Vorallem ist das Anpassen des Label1 völlig überflüssig.
Der Text wird so schnell nacheinander geändert dass man es ja eh nicht sieht.
Würd da ganz unten ein mal die caption setzten.

Greetz

Ich kenne ja nicht den Rest des Programms. Deshalb habe ich nur den Teil korrigiert, den ich gesehen habe. Ob das mit der Null nun überflüssig ist oder nicht. Darüber lässt sich streiten, welches aber vom Thema abweicht.

cobralord 4. Dez 2006 15:05

Re: Pizzaservice
 
Hallo,
den Preis für den Belag der Pizza kann ich jetzt ausrechnen und den Code für die Größe habe ich auch schon geschrieben. Es funktioniert ohne Probleme, allerdings zeigt das Programm bei jeder Pizzagröße 0€ an, obwohl ich sie oben deffiniert habe. Trotz halbstündiger Fehlersuche habe ich aber nichts gefunden was gewirkt hat.
Der Code ist:


Delphi-Quellcode:
var
  Form1: TForm1;
const Salami=1 ; Käse=0.8 ; Schinken=1.2 ; Ananas=1.3 ; Sardellen=1.5 ;
 Klein=1.5 ; Groß=2 ; Riesen=2.7 ; Family=3.5;
var Preis : double;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

if checkbox1.checked then Preis := Preis + Salami
else Preis := Preis + 0;
label1.Caption:='Der momentane Preis ist ' + floattostr(Preis) + ' €';
if checkbox2.checked then Preis := Preis + Käse
else Preis:=Preis + 0;
label1.caption:='Der momentane Preis ist ' + floattostr(Preis) + ' €';
if checkbox3.checked then Preis := Preis + Schinken
else Preis := Preis + 0;
 label1.caption:='Der momentane Preis ist ' + floattostr(Preis) + ' €';
if checkbox4.checked then Preis := Preis + Ananas
else Preis := Preis + 0;
 label1.Caption:='Der momentane Preis ist ' + floattostr(Preis) + ' €';
if checkbox5.checked then Preis := Preis + Sardellen
else Preis := Preis + 0;
label1.caption:='Der momentane Preis ist ' + floattostr(Preis)+ ' €';

if radiogroup1.itemindex = 0 then begin
Preis := Preis + Klein;
label1.caption:='Der momentane Preis ist' + floattostr(Preis) + ' €';
end;
if radiogroup1.itemindex = 1 then    begin
Preis := Preis + Groß;
label1.caption:='Der momentane Preis ist' + floattostr(Preis) + ' €';
            end;
if radiogroup1.itemindex = 2 then    begin
Preis := Preis + Riesen;
label1.caption:='Der momentane Preis ist' + floattostr(Preis) + ' €';
            end;
if radiogroup1.itemindex = 3 then    begin
Preis := Preis + Family;
label1.caption:='Der momentane Preis ist' + floattostr(Preis) + ' €';
            end;



end;




end.

Bitte helft mir!!!

Corpsman 4. Dez 2006 15:10

Re: Pizzaservice
 
Ho

Meiner meinung nach bringt das viele aufrufen von

label1.caption:='Der momentane Preis ist' + floattostr(Preis) + ' €';


gar nichts da du ja nen Button hast und der Rechner eh die Ganze routine Abarbeitet. Das würde nur was bringen wenn du die Caption setzt dann der Rechner "Ewig" in der Button Routine Rumrechnet und dann wieder setzt.

Du Prüfst aber no Boolsche Werte , selbst im schlechten Fall dauert das nicht mehr wie 100 Takte und das wären dann immer noch << 1 ms.

oschulz 4. Dez 2006 15:48

Re: Pizzaservice
 
Also ehrlich was ist übersichtlicher, das hier oder dein Quellcode?

Delphi-Quellcode:

Preis:=0;
if checkbox1.checked then Preis := Preis + Salami;
if checkbox2.checked then Preis := Preis + Käse;
if checkbox3.checked then Preis := Preis + Schinken;
if checkbox4.checked then Preis := Preis + Ananas;
if checkbox5.checked then Preis := Preis + Sardellen;
if radiogroup1.itemindex = 0 then Preis := Preis + Klein;
if radiogroup1.itemindex = 1 then Preis := Preis + Groß;
if radiogroup1.itemindex = 2 then Preis := Preis + Riesen;
if radiogroup1.itemindex = 3 then Preis := Preis + Family;

label1.caption:='Der momentane Preis ist' + floattostr(Preis) + ' €

freak4fun 4. Dez 2006 16:07

Re: Pizzaservice
 
Und weiter gehts ... :mrgreen:

Delphi-Quellcode:
Preis:=0;
if checkbox1.checked then
  Preis := Preis + Salami;
if checkbox2.checked then
  Preis := Preis + Käse;
if checkbox3.checked then
  Preis := Preis + Schinken;
if checkbox4.checked then
  Preis := Preis + Ananas;
if checkbox5.checked then
  Preis := Preis + Sardellen;

Case radiogroup1.itemindex of
  0: Preis := Preis + Klein;
  1: Preis := Preis + Groß;
  2: Preis := Preis + Riesen;
  3: Preis := Preis + Family;
end;

label1.caption := 'Der momentane Preis ist' + floattostr(Preis) + ' &#8364;
MfG
freak

cobralord 4. Dez 2006 16:21

Re: Pizzaservice
 
Ok, ok, ich gebe zu eure Codes sind natürlich viel übersichtlicher und damit viel hilfreicher als meine, aber wie gesagt, ich habe Turbodelphi erst seit knapp einem Monat und bin froh, wenn ich das Programm überhaupt zum Laufen bekomme :-D :-D .
Insofern ist mir die Übersichtlichkeit (noch) weitgehenst egal.
Ich danke euch für die Hilfsbereitschaft!!! :thumb: :thumb: :thumb:

Chris P 4. Dez 2006 17:23

Re: Pizzaservice
 
Zitat:

Käse=0.8
Sagt der Compiler nichts zu dem 'ä'?

MikeS 4. Dez 2006 17:49

Re: Pizzaservice
 
bei mir ja. :-) Hab mich auch schon gewundert und ich habe es deshalb in meinem Beitrag mit "ae" geschrieben.

Hawkeye219 4. Dez 2006 18:26

Re: Pizzaservice
 
Zitat:

Zitat von Chris P
Sagt der Compiler nichts zu dem 'ä'?

Seite Delphi 2005 duldet der Compiler Umlaute in Bezeichnern. Ob es sinnvoll ist, sie auch zu verwenden, ist eine andere Frage.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz