Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi case Wertausgabe Endbetrag (https://www.delphipraxis.net/111294-case-wertausgabe-endbetrag.html)

Muddy 1. Apr 2008 19:38


case Wertausgabe Endbetrag
 
Ich habe ein Problem in meiner Programmierung. UNd zwar weiß ich nicht wie ich jetzt den bruttowert ausgeben soll!
Am besten ebe ich euch den Quellcode.

Delphi-Quellcode:
procedure TForm2.RadioGroup1Click(Sender: TObject);
var bruttowert, nettowert, p: integer;
begin
 nettowert := strtoint (edit2.text);
  case RadioGroup1.ItemIndex of
    0: bruttowert := nettowert * 1;
    1: bruttowert := nettowert * (7/100) + nettowert ;
    2: bruttowert := nettowert + (19/100) + nettowert ;
  else
    p := strtoint (edit1.Text);
    3: bruttowert := nettowert * (p/100) + nettowert ;
  end;
  panel1.Text := inttostr (bruttowert

  end;
end;
So!! Wo steckt der fehler?

[edit=Matze][delphi]-Tags gesetzt. MfG, Matze[/edit]

Matze 1. Apr 2008 19:41

Re: case Wertausgabe Endbetrag
 
Hallo,

die case-Anweisung sieht so aus:

Delphi-Quellcode:
case <var> of
  0: ...;
  1: ...;
  2: ...;
else
  ...
end;
Es werden die Werte im oberen Abschnitt überprüft und falls <var> einen anderen Wert hat, wird der else-Abschnitt ausgeführt. In diesem kannst du nicht mehr - wie du es machst - auf den Wert zugreifen. Das ginge dort beispielsweise mit einer if-Abfrage.

Edit: Setze zukünftig bitte die [delphi]-Tags um deinen Delphi-Code.

lbccaleb 1. Apr 2008 19:45

Re: case Wertausgabe Endbetrag
 
Zitat:

Zitat von Muddy
Ich habe ein Problem in meiner Programmierung. UNd zwar weiß ich nicht wie ich jetzt den bruttowert ausgeben soll!
Am besten ebe ich euch den Quellcode.

So!! Wo steckt der fehler?


ich glaube so sollte es sein, nicht getestet:

Delphi-Quellcode:
procedure TForm2.RadioGroup1Click(Sender: TObject);
var
  bruttowert, nettowert, p: integer;
  begin
    nettowert := strtoint (edit2.text);
    case RadioGroup1.ItemIndex of
      0: bruttowert := nettowert;
      1: bruttowert := nettowert * (7 div 100) + nettowert ;
      2: bruttowert := nettowert + (19 div 100) + nettowert ;
  //  elsewas willst du hier mit nem else?? das ist nur auf eine if clausel anwendbar in delphi..
  //  p := strtoint (edit1.Text);
    3: bruttowert := nettowert * (p div 100) + nettowert ;
  end;
  panel1.caption := inttostr (bruttowert);
  end;
end;

Muddy 1. Apr 2008 19:47

Re: case Wertausgabe Endbetrag
 
Das ist nicht mein PRoblem! Ich muss doch eigentlich das else weglassen, weil ich ja eine Radiogroub verwende und muss daher die Radiobox'3' in das case einsetzen nur ich möchte den wert in dem edit-Feld ja in die Rechnung einbringen und da ist auch das problem, dass ich habe.

Das zweite PRoblem ist, wie bekomme ich das ergebniss der einzelen Rechnungen auf dem Panel angezeigt???

dominikkv 1. Apr 2008 19:48

Re: case Wertausgabe Endbetrag
 
Zitat:

Zitat von lbccaleb
Delphi-Quellcode:
  //  elsewas willst du hier mit nem else?? das ist nur auf eine if clausel anwendbar in delphi..

auch bei case gibt es else!

Muddy 1. Apr 2008 19:48

Re: case Wertausgabe Endbetrag
 
OK dankeschön. Mein Problem hat sich doch gerade aufgelöst

mkinzler 1. Apr 2008 19:51

Re: case Wertausgabe Endbetrag
 
Zitat:

auch bei case gibt es else!
Hies ursprübglich otherwise wurde aber dann später zu else

lbccaleb 1. Apr 2008 19:51

Re: case Wertausgabe Endbetrag
 
Zitat:

Zitat von Muddy
Das ist nicht mein PRoblem! Ich muss doch eigentlich das else weglassen, weil ich ja eine Radiogroub verwende und muss daher die Radiobox'3' in das case einsetzen nur ich möchte den wert in dem edit-Feld ja in die Rechnung einbringen und da ist auch das problem, dass ich habe.

Das zweite PRoblem ist, wie bekomme ich das ergebniss der einzelen Rechnungen auf dem Panel angezeigt???


ja ich hab das ganze schon veränder, ja das p muss natürlich drin bleiben und den text des panels setzt du mit caption, ich hab das ganze geändert:

Delphi-Quellcode:
procedure TForm2.RadioGroup1Click(Sender: TObject);
var
  bruttowert, nettowert, p: integer;
  begin
    p := strtoint (edit1.Text);  <--- hier den p wert auslesen aus dem edit
    nettowert := strtoint (edit2.text);
    case RadioGroup1.ItemIndex of
      0: bruttowert := nettowert;
      1: bruttowert := nettowert * (7 div 100) + nettowert ; <-- anstelle von \ lieber ein div verwenden
      2: bruttowert := nettowert + (19 div 100) + nettowert ;
  //  elsewas willst du hier mit nem else?? das ist nur auf eine if clausel anwendbar in delphi..
    3: bruttowert := nettowert * (p div 100) + nettowert ;
  end;
  panel1.caption := inttostr (bruttowert); <-- hier das panel den text zuordnen mit caption
  end;
end;

Hansa 1. Apr 2008 19:56

Re: case Wertausgabe Endbetrag
 
Er soll auch die Warnungen/Hinweise nicht einfach ignorieren. Bruttowert ist anfangs nicht mal initialisiert.

Muddy 1. Apr 2008 19:58

Re: case Wertausgabe Endbetrag
 
ICh habe doch noch ein Problem!! Er rechnet mir die Werte nicht aus!

Wenn ich als Nettowert 1000 eingebe, dann schreibt er mir bei der ersten Radio wie rwartet 1000 auch hin, aber bei den anderen schreibt er ebenfals 1000 und dass kann ja laut Rechnung nicht sein!
Und bei der letzten Radio gibt er mir eine völlig andere Zahl an

Muddy 1. Apr 2008 20:00

Re: case Wertausgabe Endbetrag
 
Aso!!! Das wird wohl mein Problem gewesen sein. Danke an alle mithelfer ich denke ich komme jetzt zurecht

Muddy 1. Apr 2008 20:07

Re: case Wertausgabe Endbetrag
 
Hansa!! Du meinst wahrscheinlich, dass ich den bruttowert noch definieren muss oder?

Hansa 1. Apr 2008 20:11

Re: case Wertausgabe Endbetrag
 
Ja sicher, ah, Völklinger Schlaumeier. :mrgreen: Überlege wie der Wert anfangs aussieht und wie er dann verändert wird, z.B. bei rg.ItemIndex = 4.

Muddy 1. Apr 2008 20:14

Re: case Wertausgabe Endbetrag
 
Wie meinst du das? Ich verstehe nicht!

Muddy 1. Apr 2008 20:15

Re: case Wertausgabe Endbetrag
 
Scheiße!!! ICh weiß nicht wie ich es jetzt definieren muss... Ich bin verwirrt

Hansa 1. Apr 2008 20:18

Re: case Wertausgabe Endbetrag
 
Schreibe vor die 1. Zuweisung :
Delphi-Quellcode:
Bruttowert := 0;
dann ist Bruttowert zumindest 0 und keine Zufallszahl.

mkinzler 1. Apr 2008 20:18

Re: case Wertausgabe Endbetrag
 
Einfach vor dem Case einen Wert zuweisen oder halt einen Else-Zweig hinzufügen.

Matze 1. Apr 2008 20:19

Re: case Wertausgabe Endbetrag
 
@Muddy: Hör bitte mit der ständigen Pusherei auf und zügel deine Ausdrucksweise.

Muddy 1. Apr 2008 20:27

Re: case Wertausgabe Endbetrag
 
Es ist immernoch das Problem da, dass er mir nicht den Bruttowert Ausgibt!

Er gibt ihn mir zwar aus, aber er rechnet nicht die Werte so aus wie er es tun sollte.

Bei der radio=0 zeigt er 1000 an bei
der radio=1 zeigt er 1000 an bei
der radio=2 zeigt er 2000 an bei
der radio=3 zeigt er 1000 an

Das kann ja nicht sein!

mkinzler 1. Apr 2008 20:29

Re: case Wertausgabe Endbetrag
 
Weil ja 7 DIV 100 0 ergibt

Muddy 1. Apr 2008 20:31

Re: case Wertausgabe Endbetrag
 
ICh muss aber einen Prozentwert berechnen. Zu dem Nettowert sollen 7% dazugerechnet werden!

mkinzler 1. Apr 2008 20:33

Re: case Wertausgabe Endbetrag
 
Dann solltest du keine Integer verwenden.

Muddy 1. Apr 2008 20:42

Re: case Wertausgabe Endbetrag
 
Jetzt zeigt er mir aber ein Fehler an.

Code:
procedure TForm2.RadioGroup1Click(Sender: TObject);
var
  bruttowert, nettowert, p: double;
  begin
    p := strtofloat (edit1.Text);
    nettowert := strtofloat (edit2.text);
    case RadioGroup1.ItemIndex of
      0: bruttowert := nettowert;
      1: bruttowert := nettowert * (7 div 100) + nettowert ;
      2: bruttowert := nettowert + (19 div 100) + nettowert ;
    3: bruttowert := nettowert * (p div 100) + nettowert ; // hier zeigt er einen Fehler an
    end;
  panel1.caption := floattostr (bruttowert);
  end;
end.

mkinzler 1. Apr 2008 20:44

Re: case Wertausgabe Endbetrag
 
Delphi-Quellcode:
bruttowert := nettowert * p / 100 + nettowert ;
Entsprechend bei den anderen Berechnungen

dominikkv 1. Apr 2008 20:51

Re: case Wertausgabe Endbetrag
 
Ist es gewollt das wenn RadioGroup1.ItemIndex == 2 dass dan 2 mal nettowert addiert wird oder hast du hier ein + mit einem * verwechselt?

Ansonsten musst du entweder runden (bruttowert := Round(nettowert * (7 /100) + nettowert)) oder du verwändest statt Integer Real/Double/Extended
Dann musst du aber FloatToStr statt IntToStr nehmen


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 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