![]() |
Pizzaservice
Hallo,
ich möchte einen Pizzaservicerechner programmieren, habe jetzt aber folgendes Problem:
Delphi-Quellcode:
Ich kriege eine Fehlermeldung: 'Operator ist auf diesen Operandentyp nicht anwendbar.'
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; 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!!! |
Re: Pizzaservice
Delphi-Quellcode:
if checkbox1.checked then Preis + Salami
|
Re: Pizzaservice
Delphi-Quellcode:
das soll wahrscheinlich
Preis + Salami
Delphi-Quellcode:
heißen.
Preis := Preis + Salami
|
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! |
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; |
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: |
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; |
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; |
Re: Pizzaservice
also
Delphi-Quellcode:
ist ja wohl extrem überflüssig!! :D
else Preis := Preis + 0;
|
Re: Pizzaservice
Vielen Dank an alle. So wie es RWarnecke und MikeS geschrieben haben funktioniert es. Vielen Dank an alle!! :thumb: :thumb:
|
Re: Pizzaservice
Zitat:
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 |
Re: Pizzaservice
Ja, zuerst habe ich gedacht die Null wäre nötig und jetzt lasse ich sie der Übersicht halber stehen...
|
Re: Pizzaservice
Zitat:
|
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!!! |
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. |
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) + ' € |
Re: Pizzaservice
Und weiter gehts ... :mrgreen:
Delphi-Quellcode:
MfG
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) + ' € freak |
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: |
Re: Pizzaservice
Zitat:
|
Re: Pizzaservice
bei mir ja. :-) Hab mich auch schon gewundert und ich habe es deshalb in meinem Beitrag mit "ae" geschrieben.
|
Re: Pizzaservice
Zitat:
Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 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