![]() |
Deklaration MWST - Achtung:Totaler NOOB!
Ich muss für den Informatikunterricht ein Bruttoberechnungsprogramm schreiben, in welchem die MwSt schon deklariert/festgelegt ist. Ich habe gegooglet wie ne Irre und finde immer was mit
//const mwst=16 aber es klappt nie. Außerdem, sobald ich in meinem Programm eine Zahl im Nettofenster eingebe, kommt diese Fehlermeldung: " ist kein gültiger Gleitkommawert :wiejetzt: So sieht mein Code momentan aus:
Delphi-Quellcode:
[edit=alcaeus]Code mit Delphi-Tags formatiert. Mfg, alcaeus[/edit]
var
Form1: TForm1; vnetto, vbrutto, vmwst:single; const mwst=16.0; implementation {$R *.dfm} procedure TForm1.nettoChange(Sender: TObject); begin //Eingabe vnetto:=strtofloat(netto.Text); vmwst:=strtofloat(mwst.Text); //Verarbeitung vbrutto:=vnetto+vnetto*vmwst/100.0; //Ausgabe brutto.Text:=floattostr(vbrutto); end; procedure TForm1.Button1Click(Sender: TObject); begin brutto.Text:=floattostr(vbrutto); brutto.Text:=floattostr(strtofloat (netto.text)+strtofloat (netto.Text)*strtofloat(mwst.Text)/100.0); end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; end. |
Re: Deklaration MWST - Achtung:Totaler NOOB!
Vermutlich, weil das Edit am Anfang leer ist und den '' Wert ins OnChange Ereigniss übernimmt.
|
Re: Deklaration MWST - Achtung:Totaler NOOB!
uPs, sorry, danke alcaeus!
@Florian Bernd: Bin da noch ziemlich neu mit, was müsste ich jetzt ändern? *liebfrag* :oops: |
Re: Deklaration MWST - Achtung:Totaler NOOB!
Hallo Jenny,
das erste Problem ist, das Du nicht 2 Sachen gleich benennen darfst. Hier hast Du das Edit MwSt und die Konstante MwSt genannt. Das funktioniert nicht. Nenn das Edit mal MwStEdit. Das nächste Problem ist, dass bei leerem Netto.Text strtofloat eine Exception auslöst, da ein leerer String nicht in eine Zahl umgewandelt werden kann. Fang das mit try..except ab. die Variablen vnetto,vmwst,vbrutto müssen nicht unbedingt global deklariert werden. Hier mal ein Codeschnipsel:
Delphi-Quellcode:
Grüsse
procedure TForm1.NettoChange(Sender: TObject);
var vnetto,vmwst,vbrutto: single; begin //Eingabe // falls netto.text keine zahl beinhaltet oder leer ist, dann vnetto := 0 try vnetto := strtofloat(Netto.Text); except vnetto := 0; end; //Verarbeitung vmwst := vnetto * (mwst / 100 ); vbrutto := vnetto * ((100+mwst) / 100); //Ausgabe (formatiert mit 2 Nachkommastellen und Tausender-Punkt) MwstEdit.Text := FormatFloat(',0.00',vmwst); Brutto.Text := FormatFloat(',0.00',vbrutto); end; ...Doc |
Re: Deklaration MWST - Achtung:Totaler NOOB!
Ein paar dinge:
1. Ist das im Change ganz schlecht, weil, wenn du alles entfernst, er aus einem Leerstring ('') kein Float machen kann und eine Fehlermedlung ausgibt. Mein Vorschlag wäre: TryStrToFloat! 2.
Delphi-Quellcode:
Hier macht die erste zuweisung keinen Sinn!
procedure TForm1.Button1Click(Sender: TObject);
begin brutto.Text:=floattostr(vbrutto); brutto.Text:=floattostr(strtofloat (netto.text)+strtofloat (netto.Text)*strtofloat(mwst.Text)/100.0); end; 3. Button1.Click und nettoChange sind an sich das gleiche, außer das bei nettochange die Umwandlungen aufgesplittet sind. Noch eine kleine Erklärung zu "TryStrToFloat": TryStrToFloat erwartet den String und eine Floatvariable und gibt einen Boolean zurück, wenn es funktioniert. Der Wert, der bei StrToFloat herauskommt ist in der übergebenen Floatvariable enthalten.
Delphi-Quellcode:
procedure TForm1.bTry(Sender : TObject);
var ExtendedBuffer : Extended; // Extended ist eine Fließkommavariable begin if TryToStr(eText.text, ExtendedBuffer) {= true} then //das = true kann man im if weglassen Showmessage(FloatToStr(ExtendedBuffer) + ' haben sie eingegeben') else Showmessage('Ihr angegebener Wert war keine Fließkommazahl!'); end; |
Re: Deklaration MWST - Achtung:Totaler NOOB!
Ich probiers heute abend, da mein Sohn gerade wach wird. Versteh zwar noch leicht Bahnhof, aber wird schon gehen, danke :) :) :)
|
Re: Deklaration MWST - Achtung:Totaler NOOB!
Okay haltet mich bitte nicht für blöde oder so... Aber ich raffs nicht! :(
Ich glaub mein Lehrer (der auch weiß, dass ich das kaum versteh) würde mich mit Fragen löchern, wenn ich das so schreibe... Weil soweit sind wir noch gar nicht (arbeiten mit den Unterlagen von datadidact). Aber sind doch die einzigen Möglichkeiten? |
Re: Deklaration MWST - Achtung:Totaler NOOB!
Was genau verstehst du nicht?
|
Re: Deklaration MWST - Achtung:Totaler NOOB!
irgendwie alles :oops: also wie ich das jetzt bei mir ändern muss genau. Ich komm voll durcheinander grad :( :oops: :oops: :oops: :wall:
|
Re: Deklaration MWST - Achtung:Totaler NOOB!
Delphi-Quellcode:
Getiipt und nicht getestet.
procedure TForm1.nettoChange(Sender: TObject);
begin if netto.text = '' then Exit; //Eingabe if TryStrToFloat(netto.Text, vnetto) then begin //Nettoeingabe korrekt if TryStrToFloat(mwst.Text,vmwst ) then begin // //Mwst-Eingabe korrekt //Verarbeitung vbrutto:=vnetto+vnetto*vmwst/100.0; //Ausgabe brutto.Text:=floattostr(vbrutto); end else begin //Eingabe ist nicht ok ... end; end else begin //Eingabe ist nicht ok end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 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