Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Deklaration MWST - Achtung:Totaler NOOB! (https://www.delphipraxis.net/77299-deklaration-mwst-achtung-totaler-noob.html)

Jenny84 17. Sep 2006 11:42


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:
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.
[edit=alcaeus]Code mit Delphi-Tags formatiert. Mfg, alcaeus[/edit]

Zacherl 17. Sep 2006 11:57

Re: Deklaration MWST - Achtung:Totaler NOOB!
 
Vermutlich, weil das Edit am Anfang leer ist und den '' Wert ins OnChange Ereigniss übernimmt.

Jenny84 17. Sep 2006 12:01

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:

DocE 17. Sep 2006 12:02

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:
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;
Grüsse
...Doc

xZise 17. Sep 2006 12:03

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:
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;
Hier macht die erste zuweisung keinen Sinn!
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;

Jenny84 17. Sep 2006 12:06

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 :) :) :)

Jenny84 17. Sep 2006 18:13

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?

mkinzler 17. Sep 2006 18:36

Re: Deklaration MWST - Achtung:Totaler NOOB!
 
Was genau verstehst du nicht?

Jenny84 17. Sep 2006 18:39

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:

mkinzler 17. Sep 2006 18:48

Re: Deklaration MWST - Achtung:Totaler NOOB!
 
Delphi-Quellcode:
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;
Getiipt und nicht getestet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz