Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Programm gibt Ergebnis nicht aus - MWST-Rechner (Anfänger)
DeusXIII - Do 07.04.22 08:36
Titel: Programm gibt Ergebnis nicht aus - MWST-Rechner (Anfänger)
Hallöchen ins Forum,
ich arbeite seit drei-vier Tagen an einem Rechner der Brutto/Netto-Preise berechnen soll. Gedacht ist den Preis in ein Editfeld einzutragen, dann per Button entweder Brutto oder Netto zu wählen und das Ergbnis dann in einem Label auszugeben.
Er gibt auch keine Fehler aus oder ähnliches, aber halt auch kein Ergebnis im Label. Der Test-Button, welchen ich implementiert habe, schreibt beim Klick eine 1 in das Test-Label und auch in das Endpreis-Label, das funktioniert. (der Button fliegt dann natürlich auch weg wenn das Programm fertig ist.)
Vieleicht kann mir jemand auf die Sprünge helfen, wo der Mops im Pfeffer liegt?
Vielen Dank schon mal im Voraus, der Sourcecode folgt ab hier ^^
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: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83:
| unit Unit1;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type TRechenart = (raKeine, raBrutto, raNetto); TForm1 = class(TForm) EditPreis: TEdit; LabelPreis: TLabel; ButtonBrutto: TButton; LabelOder: TLabel; ButtonNetto: TButton; LabelErgebnis: TLabel; LabelEndpreis: TLabel; Button1: TButton; Label1: TLabel; procedure ButtonBruttoClick(Sender: TObject); procedure ButtonNettoClick(Sender: TObject); procedure Button1Click(Sender: TObject);
private public end;
var Form1: TForm1; Zahl1, Zahl2 : Real; Rechenart : TRechenart;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:=Label1.Caption+'1'; LabelEndpreis.Caption:=LabelEndpreis.Caption+'1'; end;
procedure TForm1.ButtonBruttoClick(Sender: TObject); var Ergebnis : Real; begin if Rechenart <> raKeine then begin Zahl1:=StrToFloat(LabelEndpreis.Caption); case Rechenart of raBrutto: Ergebnis:=Zahl1 * 119 / 100; end; LabelEndpreis.Caption:=FloatToStr(Ergebnis); Rechenart:=raKeine; end; end;
procedure TForm1.ButtonNettoClick(Sender: TObject); var Ergebnis : Real; begin if Rechenart <> raKeine then begin Zahl1:=StrToFloat(LabelEndpreis.Caption); case Rechenart of raNetto: Ergebnis:=Zahl1 / 119 * 100; end; LabelEndpreis.Caption:=FloatToStr(Ergebnis); Rechenart:=raKeine; end; end;
end. |
Moderiert von Th69: Titel geändert (Klein- -> Großschreibung).
Th69 - Do 07.04.22 09:12
Hallo und :welcome:
Hast du schon mal dein Programm mit dem Debugger durchlaufen lassen (also Haltepunkt in der ButtonBruttoClick-Funktion setzen und im Einzelschritt weiterlaufen lassen sowie Variablen anzeigen lassen)?
Tipp: Variable Rechenart ;-)
PS: Deine begin...end-Blöcke solltest du einheitlich einrücken (damit der Code besser zu lesen ist).
DeusXIII - Do 07.04.22 09:23
Hallo ^^
Nein, das habe ich noch nicht probiert, werd ich dann direkt mal testen.
Die Variable ist wohl falsch?
Danke für den Hinweis, hast du eine Zeile als Beispiel? Ich war der Meinung, das schon recht einheitlich gehalten zu haben, bin aber natürlich offen für Korrekturen ^^
Gausi - Do 07.04.22 09:32
Hallo und :welcome: auch von mir!
Worauf
Th69 wohl rauswollte ist: Welchen Wert hat denn die Variable "Rechenart", wenn du auf den einen oder anderern Button klickst? Oder anders: An welcher Stelle setzt du diese Variable, die iirc automatisch mit 0 (d.h. mit raKeine) initialisiert wird?
Th69 - Do 07.04.22 10:16
Ja, das meinte ich...
Außerdem macht der case...of-Vergleich bisher so keinen wirklichen Sinn (mit nur jeweils einem Fall!), sondern nur wenn du eine eigene Prozedur/Funktion für die Berechnung und/oder Ausgabe hättest (und diese dann aus den beiden Button-Prozeduren mit passenden Parametern aufrufen würdest).
Falls du das als Anfänger noch nicht verstehst, dann lies mal (lerne), wie man eigene Prozeduren/Funktionen erstellt.
Und bzgl. Einrückung z.B. die Zeilen 54/62 (im Vergleich zu 72/80) als auch 42/45 (im Unterschied zu den anderen Prozeduren). Und die zusätzliche Einrückung der Zeilen 60/61 sowie 78/79 (im Vergleich zu den vorherigen Zeilen).
DeusXIII - Do 07.04.22 13:29
Auf jeden Fall vielen Dank für die Tipps/ Anregungen.
Aber meine Frage bezog sich nicht auf evtl. Formfehler und/oder ob es sinnig ist, hier ein "case of" zu nutzen oder nicht, sondern:
wieso mein Programm keine Ausgabe des Ergebnisses ins Label macht ^^
edit:
Rechenart bezieht sich auf
TRechenart, welche in Zeile 10 unter
type steht:
(raKeine, raBrutto, raNetto)
Moderiert von Th69: Delphi-Tags hinzugefügt
Gausi - Do 07.04.22 13:58
DeusXIII hat folgendes geschrieben : |
sondern:
wieso mein Programm keine Ausgabe des Ergebnisses ins Label macht ^^
edit:
Rechenart bezieht sich auf TRechenart, welche in Zeile 10 unter type steht: (raKeine, raBrutto, raNetto) |
Das ist schon klar. ;-) Daher ja auch die Frage, wo du den Wert der Variablen von
raKeine auf was anderes setzt. Denn solange der Wert auf
raKeine steht, machen deine beiden
ButtonClick-Prozeduren so ziemlich genau nichts. :idea:
Moderiert von Th69: Delphi-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!