Autor Beitrag
Anja
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN xp

BeitragVerfasst: Mi 04.06.03 19:39 
ICh brauche Hilfe ich hab was programmiert. Ausrehcnung von mehrwertsteuer!

Nun bringt er mir aber keine Komastellen was hab ich falsch gemacht!

MEin 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:
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
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    txtNetto: TEdit;
    Label3: TLabel;
    txtSteuer: TEdit;
    Label4: TLabel;
    BNetto: TButton;
    BBrutto: TButton;
    BSteuer: TButton;
    RadB: TRadioGroup;
    Rad7: TRadioButton;
    Rad16: TRadioButton;
    txtBrutto: TEdit;
    procedure BNettoClick(Sender: TObject);
    procedure BSteuerClick(Sender: TObject);
    procedure BBruttoClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
Function Netto_Berechnen(MWST:integer;b:integer):integer;
Begin
  Result:=round(b*MWST/(100+Mwst));
end;

Function Steuer_Berechnen(MWST:integer;n:integer):integer;
Begin
  Result:=round(n*MWST/100);
end;

Function Brutto_Berechnen(n:integer;st:integer):integer;
Begin
  Result:=n+st;
end;

procedure TForm1.BNettoClick(Sender: TObject);
var
s:string;
begin
      s:=txtBrutto.text;
      If  Rad16.Checked then txtNetto.text:=IntToStr(Netto_Berechnen(16,StrToInt(s)));
      If  Rad7.Checked then txtNetto.text:=IntToStr(Netto_Berechnen(7,StrToInt(s)));


end;

procedure TForm1.BSteuerClick(Sender: TObject);

var
s:string;
begin
      s:=txtNetto.text;
      If  Rad16.Checked then txtSteuer.text:=IntToStr(Steuer_Berechnen(16,StrToInt(s)));
      If  Rad7.Checked then txtSteuer.text:=IntToStr(Steuer_Berechnen(7,StrToInt(s)));


end;

procedure TForm1.BBruttoClick(Sender: TObject);

begin
     txtBrutto.text:=IntToStr(Brutto_Berechnen(StrToInt(txtNetto.text),StrToInt(txtSteuer.text)));
end;

end.



Moderiert von user profile icontommie-lie: Delphi-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 04.06.03 19:42 
Deine Funktion "Steuer_berechnen" hat als Rückgabewert einen Integer. Da kann es ja gar keine Nachkommastellen geben. Mach den Rückgabewert mal als Real und lass das Round weg.

MfG,
Peter

P.S.: UNBEDINGT Delphi-Tags verwenden! Am Besten sofort per "Edit" noch zum Beitrag hinzufügen.

//Edit: Achja, der Titel Deines Threads ist nicht gerade toll, denn ich möchte wette, dass sich in diesem Delphi-Forum noch der eine oder andere Thread sich mit Delphi-Programmierung beschäftigt.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Anja Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN xp

BeitragVerfasst: Mi 04.06.03 20:12 
kannst du mir mal bitte genau aufschreiben wo ich das ändern muss?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 04.06.03 20:21 
Meinst Du jetzt im Quelltext oder im Thread?

Naja, ich beschreib einfach beides. Erstmal der Quelltext. Folgende Funktion verwendest Du:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
Function Steuer_Berechnen(MWST:integer;n:integer):integer;
Begin
Result:=round(n*MWST/100);
end;


damit die Nachkommastellen zurückgibt, musst Du sie so umschreiben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Function Steuer_Berechnen(MWST:integer;n:integer):Real;
Begin
Result:=n*MWST/100;
end;


Dann liefert Dir die Prozedur auch Nachkommastellen zurück.

Dann musst Du aber auch noch folgende Prozedur ändern, weil IntToStr bei Nicht-Integern nicht funktionieren kann:
alte Version:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.BSteuerClick(Sender: TObject);

var
s:string;
begin
s:=txtNetto.text;
If Rad16.Checked then txtSteuer.text:=IntToStr(Steuer_Berechnen(16,StrToInt(s)));
If Rad7.Checked then txtSteuer.text:=IntToStr(Steuer_Berechnen(7,StrToInt(s)));


end;

Neue Version:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.BSteuerClick(Sender: TObject);

var
s:string;
begin
s:=txtNetto.text;
If Rad16.Checked then txtSteuer.text:=FloatToStr(Steuer_Berechnen(16,StrToInt(s)));
If Rad7.Checked then txtSteuer.text:=FloatToStr(Steuer_Berechnen(7,StrToInt(s)));


end;


So, und jetzt, wie man den Thread ändern kann!: bei dem allerersten Postung müsstest Du rechts neben dem Titel den Button "edit" haben. Klick drauf. Dann änderst Du den Titel und schreibst vor den Quelltext "[ delphi ]" und nach dem Quelltext "[/ delphi ]". Allerdings ohne die Leerzeichen dazwischen. Dann auf Absenden klicken.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Anja Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN xp

BeitragVerfasst: Mi 04.06.03 20:34 
Titel: MWST
funktioniert noch nciht!

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:
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:
84:
85:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    txtNetto: TEdit;
    Label3: TLabel;
    txtSteuer: TEdit;
    Label4: TLabel;
    BNetto: TButton;
    BBrutto: TButton;
    BSteuer: TButton;
    RadB: TRadioGroup;
    Rad7: TRadioButton;
    Rad16: TRadioButton;
    txtBrutto: TEdit;
    procedure BNettoClick(Sender: TObject);
    procedure BSteuerClick(Sender: TObject);
    procedure BBruttoClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
Function Netto_Berechnen(MWST:integer;b:integer):real;
Begin
  Result:=round(b*MWST/(100+Mwst));
end;

Function Steuer_Berechnen(MWST:integer;n:integer):real;
Begin
  Result:=round(n*MWST/100);
end;

Function Brutto_Berechnen(n:integer;st:integer):real;
Begin
  Result:=n+st;
end;

procedure TForm1.BNettoClick(Sender: TObject);
var
s:string;
begin
      s:=txtBrutto.text;
      If  Rad16.Checked then txtNetto.text:=FloatToStr(Netto_Berechnen(16,StrToInt(s)));
      If  Rad7.Checked then txtNetto.text:=FloatToStr(Netto_Berechnen(7,StrToInt(s)));


end;

procedure TForm1.BSteuerClick(Sender: TObject);

var 
s:string
begin 
s:=txtNetto.text; 
If Rad16.Checked then txtSteuer.text:=FloatToStr(Steuer_Berechnen(16,StrToInt(s))); 
If Rad7.Checked then txtSteuer.text:=FloatToStr(Steuer_Berechnen(7,StrToInt(s))); 




end;

procedure TForm1.BBruttoClick(Sender: TObject);

begin
     txtBrutto.text:=FloatToStr(Brutto_Berechnen(StrToInt(txtNetto.text),StrToInt(txtSteuer.text)));
end;

end.


Moderiert von user profile icontommie-lie: Delphi-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 04.06.03 20:41 
(1) Könntest Du Delphi-Tags verwenden?
(2) Könntest Du noch schreiben, wie der Fehler lautet, den er anzeigt?

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Anja Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN xp

BeitragVerfasst: Mi 04.06.03 20:43 
Titel: fehlermeldung
mit kommastellen er kanne s nicht keine ahnung wieso!

55,55 ist ken gültiger integerwert
Anja Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN xp

BeitragVerfasst: Mi 04.06.03 20:45 
Titel: Fehler
Ich glaube die prozeduren stimmen nciht
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 04.06.03 21:02 
Also, ich habe jetzt mal bei mir ein Projekt mit Deinem Quelltext erstellt. Du musst zuallererst aus allen Funktionen das "Round" herausnehmen. Denn das macht ja aus einem Realwert einen Integerwert, ist also genau das, was Du nicht haben willst.

Dann bin ich mir nicht sicher, ob die Berechnungen alle korrekt sind.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 04.06.03 21:05 
Die Nettoberechnung ist, glaube ich, falsch.

Deine version:
(b * mwst)/(100+mwst)

Ich glaube, so sollte es sein:
(b*100)/(100 + mwst)

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Anja Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN xp

BeitragVerfasst: Mi 04.06.03 21:15 
Titel: fehler
zeigt immer ncoh ein integer fehler
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 04.06.03 21:18 
Hm, du musst natürlich aufpassen, dass vor jedem Buttonklick auch nur Integerwerte in den Feldern stehen, die er einliest. Sonst versucht er ja eine Kommazahl in einen Integer umzuwandeln!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Anja Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN xp

BeitragVerfasst: Mi 04.06.03 21:20 
Titel: komma
da muss auch ne kommazahl eingegeben werden wie mahc ich das?
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 04.06.03 21:22 
poste mal den Code, wie er jetzt ist. Das da ist so gut wie nichts. Ich meine jetzt das Problem. Und die Delphi-Tags sind schon wichtig. So wie es jetzt da steht kann mans kaum lesen. So muß das aussehen:

Zitat:
[delphiX]hier ist der sourcecode [/delphiX]


Wobei das X bei Delphi weggelassen werden muß. Das habe ich nur reingemacht, damit Du den Text an sich siehst, wie er aussieht, wenn Du ihn eintipst.

_________________
Gruß
Hansa
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 04.06.03 21:22 
Okay, ganz pauschal:

Du änderst in jedem Funktionskopf die Variablen, die als Integer deklariert wurden in Real um und benutzt überall dort, wie StrToInt vorkommt StrToFloat.

Dann sollte wir schon ein gutes Stück weiter. Und demänchst BITTE die Delphi-Tags!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mi 04.06.03 21:24 
Auch von mir nochmal der Hinweis, die Delphi-Tags zu benutzen und den Titel des Topics zu ändern.
Wie ersteres geht hat ja mein Vorposter schon genauestens erklärt, letzteres geht, indem du bei deinem ersten Beitrag ganz oben rehts auf "edit" klickst. Dann erscheint das Fenster zum Bearbeiten des Postings und dort kannst du den Titel ändern. Danach einfach nochmal auf "Absenden" klicken, dann hast du den neuen Titel.

Edit: ui ist hier der Andrang groß, mittlerweile hat das mit den Tags schon mein Vorborposter erläutert ;-)

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Anja Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN xp

BeitragVerfasst: Mi 04.06.03 21:35 
Titel: fehler
zeigt mir an da es kein gleitkommawert ist!

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:
47:
48:
Function Netto_Berechnen(MWST:real;b:real):real;
Begin
  Result:=b*MWST/(100+Mwst); // (b*100)/(100 + mwst)

end;

Function Steuer_Berechnen(MWST:real;n:real):real;
Begin
  Result:=n*MWST/100;
end;

Function Brutto_Berechnen(n:real;st:real):real;
Begin
  Result:=n+st;
end;

procedure TForm1.BNettoClick(Sender: TObject);
var
s:string;
begin
      s:=txtBrutto.text;
      If  Rad16.Checked then txtNetto.text:=FloatToStr(Netto_Berechnen(16,StrToFloat(s)));
      If  Rad7.Checked then txtNetto.text:=FloatToStr(Netto_Berechnen(7,StrToFloat(s)));


end;

procedure TForm1.BSteuerClick(Sender: TObject);

var 
s:string;
begin 
s:=txtNetto.text;
If Rad16.Checked then txtSteuer.text:=FloatToStr(Steuer_Berechnen(16,StrToFloat(s)));
If Rad7.Checked then txtSteuer.text:=FloatToStr(Steuer_Berechnen(7,StrToFloat(s)));




end;

procedure TForm1.BBruttoClick(Sender: TObject);

begin
     txtBrutto.text:=FloatToStr(Brutto_Berechnen(StrToFloat(txtNetto.text),StrToFloat(txtSteuer.text)));
end;

end.


Moderiert von user profile icontommie-lie: Delphi-Tags hinzugefügt
Anja Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN xp

BeitragVerfasst: Mi 04.06.03 21:43 
Titel: gleitkommafehler
wie bekomm ich den gleitkommafehlerweg
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Mi 04.06.03 21:44 
Hi, gewöhn dir bitte an den Delphi Tag zu benutzen. Dein Code ist sonst unlesbar... Einfach oben auf den Button Delphi klicken, den Code reinpasten oder -schreiben und dann nochmal auf den Delphi-Button klicken. du kannst das ganze natürlich auch in den delphi-Tag einschließen, indem du vor den Code [delphi*] und hinter den Code [/delphi*] schreibst (jeweils ohne *).

Fis

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
Anja Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN xp

BeitragVerfasst: Mi 04.06.03 21:48 
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:
47:
48:
Function Netto_Berechnen(MWST:real;b:real):real;
Begin
  Result:=b*MWST/(100+Mwst); // (b*100)/(100 + mwst)

end;

Function Steuer_Berechnen(MWST:real;n:real):real;
Begin
  Result:=n*MWST/100;
end;

Function Brutto_Berechnen(n:real;st:real):real;
Begin
  Result:=n+st;
end;

procedure TForm1.BNettoClick(Sender: TObject);
var
s:string;
begin
      s:=txtBrutto.text;
      If  Rad16.Checked then txtNetto.text:=FloatToStr(Netto_Berechnen(16,StrToFloat(s)));
      If  Rad7.Checked then txtNetto.text:=FloatToStr(Netto_Berechnen(7,StrToFloat(s)));


end;

procedure TForm1.BSteuerClick(Sender: TObject);

var
s:string;
begin
s:=txtNetto.text;
If Rad16.Checked then txtSteuer.text:=FloatToStr(Steuer_Berechnen(16,StrToFloat(s)));
If Rad7.Checked then txtSteuer.text:=FloatToStr(Steuer_Berechnen(7,StrToFloat(s)));




end;

procedure TForm1.BBruttoClick(Sender: TObject);

begin
     txtBrutto.text:=FloatToStr(Brutto_Berechnen(StrToFloat(txtNetto.text),StrToFloat(txtSteuer.text)));
end;

end.


also so aber zeigt immer ncoh ein gleitkommafehler an