Autor Beitrag
DelphiSchüler1989
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 15.11.10 18:26 
Schreibe morgen eine Klasur nach und bin immomen fleißig am üben.
Bitte um möglichst schnelle Hilfe. Schon mal vielen Dank im Vorraus.

Zum Programm:

Es soll ein Bruttobetrag eingelesen werden und mit berücksichtigung der Steuerklasse (A,B bzw. in der Radiogroup 0,1) die richtige Steuer gewählt und in einer Listbox ausgegeben werden.

Quellcode:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
type
  TForm1 = class(TForm)
    EditBrutto: TEdit;
    RadioGroupGeschlecht: TRadioGroup;
    RadioGroupKlasse: TRadioGroup;
    ListBoxAusgabe: TListBox;
    ButtonBerechnen: TButton;
    procedure ButtonBerechnenClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

VAR Brutto,Steuer:integer;

procedure TForm1.ButtonBerechnenClick(Sender: TObject);
begin
Brutto:=StrToInt(EditBrutto.text);

CASE RadioGroupKlasse.itemindex OF

0:Begin
  If Brutto>2000 Then Steuer:=20 Else
  If Brutto>3000 Then Steuer:=30 Else
  If Brutto>5000 Then Steuer:=40
  end;
1:Begin
  If Brutto>2000 Then Steuer:=20 Else
  If Brutto>3000 Then Steuer:=30 Else
  If Brutto>5000 Then Steuer:=40
  end;
ListBoxAusgabe.items.add('Steuer');

end;

end;

end.



Problem:
Die Zeile "ListBoxAusgabe.items.add('Steuer');" ist markiert und folgender Fehler wird von Delphi angegeben:
[Error] Arbeit1.pas(49): Constant expression expected

Moderiert von user profile iconMartok: Delphi-Tags gesetzt
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 15.11.10 19:09 
Hey,

die Zeile muss ein end weiter runter. So wie du es jetzt hast steht das ganze noch in der case-Anweisung, und da erwartet er halt einen konstanten Integer-Wert.

€:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
  Brutto:=StrToInt(EditBrutto.text);

  case RadioGroupKlasse.itemindex OF
    0:Begin
      If Brutto>2000 Then Steuer:=20 Else
      If Brutto>3000 Then Steuer:=30 Else
      If Brutto>5000 Then Steuer:=40
    end;
    1:Begin
      If Brutto>2000 Then Steuer:=20 Else
      If Brutto>3000 Then Steuer:=30 Else
      If Brutto>5000 Then Steuer:=40
    end;
    //ListBoxAusgabe.items.add('Steuer');
  end;
  ListBoxAusgabe.items.add('Steuer');


Benutz bitte das nächste mal die Delphi Tags, dass der Code auch ordentlich angezeigt wird: <span class="inlineSyntax"><span class="codecomment">{PROTECTTAG1697087c7d8537e352055cc022cb6a0b}</span></span> ;)

Mfg Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^


Zuletzt bearbeitet von Bergmann89 am Mo 15.11.10 19:11, insgesamt 1-mal bearbeitet
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Mo 15.11.10 19:10 
user profile iconDelphiSchüler1989 hat folgendes geschrieben Zum zitierten Posting springen:
Die Zeile "ListBoxAusgabe.items.add('Steuer');" ist markiert und folgender Fehler wird von Delphi angegeben:
Wenn Du Deinen Quelltext richtig formatiert hättest, wäre es Dir aufgefallen, daß die Zeile

ausblenden Delphi-Quelltext
1:
ListBoxAusgabe.items.add('Steuer');					

noch innerhalb der Case-Anweisung liegt. Da gehört sie aber nicht hin.
Außerdem sind die if-Abfragen hier
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
0:Begin 
If Brutto>2000 Then Steuer:=20 Else 
If Brutto>3000 Then Steuer:=30 Else 
If Brutto>5000 Then Steuer:=40 
end
1:Begin 
If Brutto>2000 Then Steuer:=20 Else 
If Brutto>3000 Then Steuer:=30 Else 
If Brutto>5000 Then Steuer:=40 
end;
allesamt falsch. Wenn das Gehalt 3500 beträgt, wird der Wert auf 20 gesetzt, weil die Else-Zweige nicht mehr durchlaufen werden.