![]() |
Operator ist auf diesen Operandentyp nicht anwendbar
Hallo :)
Ich hoffe ihr könnt mir weiter helfen: Ich schreibe meine Facharbeit in Informatik und muss dazu ein Programm mit Delphi erstellen. Ich muss dazu sagen, dass ich kompletter Anfänger bin, was Delphi betrifft. Das Programm ist für einen Segelverein, der Gastlieger bekommt: Je nach Dauer des Aufenthalts (T), Länge des Bootes (L) und Anzahl der benötigten Duschmarken (D) soll errechnet werden, was der ganze Spaß kosten soll. Dann soll das Programm im Hintergrund diese Summen abspeichern, sodass sie nach Passwortabfrage wieder erscheinen und man beispielsweise Abrechnungen damit machen kann. Mein Problem ist folgendes: Ich bekomm schon allein die Berechnung nicht hin :( Hier mein Quelltext:
Delphi-Quellcode:
Ich hoffe ihr könnt mir weiter helfen :(
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; Panel2: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; edtL: TEdit; edtT: TEdit; edtD: TEdit; edtS: TEdit; btnRechnen: TBitBtn; procedure btnRechnenClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btnRechnenClick(Sender: TObject); var L, T, D, a, Ausgabe: real; Laenge:String; begin L:=StrToFloat(edtL.Text); T:=StrToFloat(edtT.Text); D:=StrToFloat(edtD.Text); begin if L<=7 then a:=6 end; begin if L>7 and L<8.1 then a:=7 end; begin if L>8 and L<9.1 then a:=8 end; begin if L>9 and <10.1 then a:=9 end; begin Ausgabe:=(L*T)+D; edtS.Text:=FloatToStr(Ausagbe); end; end. Liebe Grüße |
AW: Operator ist auf diesen Operandentyp nicht anwendbar
In welcher Zeile erscheint der Fehler?
|
AW: Operator ist auf diesen Operandentyp nicht anwendbar
49 - 58
Also quasi ab der Zeile wo ich ihm sagen möchte: 'von 7 bis 8,1 berechne für a = 7' |
AW: Operator ist auf diesen Operandentyp nicht anwendbar
Richte erst mal deine Blöcke
Delphi-Quellcode:
und nicht
then
begin <Zuweisung> ... end;
Delphi-Quellcode:
then
<Zuwesiung> begin ... end, |
AW: Operator ist auf diesen Operandentyp nicht anwendbar
Erstmal Herzlich Willkommen in der DP :-)
Du hast in Deinem Code sowieso unnütz viele begin end Konstrukte drin. Hier mal übersichtlicher:
Delphi-Quellcode:
Dein Fehler ist damit auch behoben. :)
procedure TForm1.btnRechnenClick(Sender: TObject);
var L, T, D, a, Ausgabe: real; Laenge:String; begin L := StrToFloat(edtL.Text); T := StrToFloat(edtT.Text); D := StrToFloat(edtD.Text); if L <= 7 then a := 6; if (L > 7) and (L < 8.1) then a := 7; if (L > 8) and (L < 9.1) then a := 8; if (L > 9) and (L < 10.1) then a := 9; Ausgabe := (L * T) + D; edtS.Text := FloatToStr(Ausagbe); end; |
AW: Operator ist auf diesen Operandentyp nicht anwendbar
Klammern setzen?
Delphi-Quellcode:
und
or
Delphi-Quellcode:
hat Vorrang vor
and
Delphi-Quellcode:
und
<
Delphi-Quellcode:
>
[edit] das Tier war schneller, aber da er den Grund für den Fehler zwar behoben, aber nicht benannt hat, war ich schneller :tongue: PS: Es kann sein, daß
Delphi-Quellcode:
nicht gesetzt wurde.
a
Kennst du
Delphi-Quellcode:
? Wobei das eher nach einem
<=
![]() Und wo wird
Delphi-Quellcode:
eigentlich verwendet?
a
|
AW: Operator ist auf diesen Operandentyp nicht anwendbar
Die Berechnung ist falsch ;)
Delphi-Quellcode:
Hier wird stumpf die Länge mit den Tagen multipliziert und dann die Anzahl der Duschmarken addiert?
Ausgabe := ( L * T ) + D;
Und dabei soll was vernünftiges rauskommen? Wenn wir uns mal nur die Einheiten ansehen dann stellt man schnell fest, dass da was nicht stimmen kann:
Code:
Also brauchen wir wohl etwas mehr
( Meter * Tag ) + Stück = TagMeter + Stück
Code:
Kürzt man jetzt alles weg, dann bleibt nur noch Euro über, also ein Preis.
Meter * Euro/( Meter * Tag ) * Tag + Stück * Euro/Stück
Somit fehlt in der Berechnung der Wert für die Miete (Preis pro Meter und Tag) und die Kosten für die Duschmarken.
Delphi-Quellcode:
Und die Abfragen würde ich auch so handeln
Ausgabe := L * T * BootPreisProMeterTag + D * DuschmarkePreisProStueck;
Delphi-Quellcode:
a := 6;
if L > 7 then a := 7; if L > 8 then a := 8; if L > 9 then a := 9; |
AW: Operator ist auf diesen Operandentyp nicht anwendbar
Vielen Dank :D
Es funktioniert *hüpf* Und wie kann ich jetzt diese Summen hinterrücks speichern? Ich dachte vielleicht daran das mit nem neuen Formular zu machen, sodass das dann angezeigt wird, nachdem die Passwortabfrage getätigt wurde. Neues Formular anzeigen mach ich doch mit Form.visible:=true, oder? Aber von der Passwortabfrage.. *schulterzuck* |
AW: Operator ist auf diesen Operandentyp nicht anwendbar
Die Frage bitte in einem neuen Thread stellen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 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 by Thomas Breitkreuz