![]() |
Kleines Rechnungsprogramm
Is zwar sicher einfach bin aber aufgeschmissen:
Ich soll ein Programm schrieben wo ich 3 Beträge eingeben kann, diese addiert werden, falls diese dann unter 100 euro liegen 7,50 porto dazukommen, dann noch die mwst und zu guter letzt der gesamtbetrag ausgegeben wird. war unsere erste stunde mit delphi und unsere lehrerin hat das aufgegeben ohne uns zu erklärn wie wir das machen solln und ich weis z.B. net was strtoint is weil sie gemeint hat "schreibs da hin" aber nich erklärt hat wasses is es in dem sinne bin ich aufgeschmissen ich weis das irgendwas mit if then else is und das ich 3 edit felder und 9 labels brauch aber das wars au schon ^^ ich habs jetzt mal mit ner delphi faq versucht aber so richtig geholfen hat die mir net es scheiterte schon daran die eingabe ausm edit feld ner variablen zuzuweisen bin für jede hilfe dankbar mfg [edit] sorry falsche rubrik [/edit] |
Re: Kleines Rechnungsprogramm
:dp: Willkommen in der DP :dp:
Zitat:
Schreib's hin! Allerdings hätte sie dir dann auch noch sagen müssen: Schreib den Begriff (z.B.: "StrToInt") hin, markiere ihn und drücke "F1". Damit rufst du die Delphi - Hilfe auf, die sich wunderbar für solche Zwecke eignet. //Edit: Na ja, Lehrer halt.... |
Re: Kleines Rechnungsprogramm
hmm, erstmal Willkommen hier ;)
Naja komischen Lehrer haste da... naja Also Delphi... erstmal Delphi unterscheidet zwischen verschiedenen Datentypen wie z.B. integer(ganze Zahlen[-1,2,..]) oder strings (wortketten['hallo']) Deine Rechnung benötigt aber denke ich mal Fließkommazahlen(d.h. 2,3122) daher müsstest du einen Typ wie double nehmen. Ich hoffe du weißt wie du Variablen deklarierst.. naja sagen wir mal du hast 1ne variable vom typ double:
Delphi-Quellcode:
so nun hast du etwas in deinen Edit[text]Feldern.
var erg : double; <--- Variable erg vom typ double
Wie der Name schon sagt ist das ein Text d.h. ein string, da du aber in Delphi nicht mit strings rechnen kannst, müssen diese umgeformt werden, dies geschieht mit Befehlen wie StrToInt('13') oder StrToFloat('2.131') Um den Text aus dem Feld zu bekommen musst du FELDNAME.Text schreiben, standartmäßig heißt das 1. Feld Edit1 also: Edit1.text usw.. Soo nun möchtest du 3 Felder addieren Bsp.:
Delphi-Quellcode:
jetzt steht in der variablen erg die summe der 3 Felder!
var erg : double;
Begin erg := StrToFloat(Edit1.text) + StrToFloat(Edit2.text) + StrToFloat(Edit3.text); end; Und wenn diese Summe über 100 geht soll etwas passieren:
Delphi-Quellcode:
Und um eine Zahl wieder in einen String zu konvertieren kannst du IntToStr(123) oder FloatToStr(2.3123) verwenden!
var erg : double;
Begin erg := StrToFloat(Edit1.text) + StrToFloat(Edit2.text) + StrToFloat(Edit3.text); if erg > 100 then //was passieren soll wenn es über 100 ist else //was passieren soll wenn es nicht über 100 ist end; |
Re: Kleines Rechnungsprogramm
Zitat:
|
Re: Kleines Rechnungsprogramm
hab ich nicht ausprobiert^^ naja ich hatte es selbst gesehen und geändert abgesendet und dann kam aber das schon ein Beitrag in der zwischenzeit geschrieben wurde, scheint mir das das nicht übernommen wurde dann^^
änder ich dann mal fix |
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Fragen / Anregungen zur DP" nach "Sonstige Fragen zu Delphi" verschoben.
In der Sparte "Fragen und Anregungen" bitte nur Fragen zum Forum posten und nicht zum programmieren. Danke. |
Re: Kleines Rechnungsprogramm
Moin moin!
Erstmal Danke für die Hilfe, ich hab jetzt mal dran rumgebastelt. Aber folgendes: ich kann als Beträge keine KOmmazahlen einsetzen und so wie ichs jetzt hab läufts net weil er anstatt else end erwartet wieso auch immer. und wenn ich sowohl <100 als auch >=100 mit zwei getrennten if´s deklarier dann verdreht er wann er mwst versand dazurechnen muss und wann net. schauts euch einfach mal an:
Delphi-Quellcode:
var erg : real;
erg2 : real; erg3 : real; Begin erg := strtofloat(Edit1.text) + strtofloat(Edit2.text) + strtofloat(Edit3.text); if erg < 100 then label7.Caption := FloatToStr(7.50); erg2 := (erg + 7.50) * 0.16; label8.caption := FloatToStr(erg2); erg3 := (erg + 7.50) * 1.16; label9.caption := FloatToStr(erg3) else label7.Caption := FloatToStr(0); erg2 := erg * 0.16; label8.caption := FloatToStr(erg2); erg3 := erg * 1.16; label9.caption := FloatToStr(erg3); end; end. |
Re: Kleines Rechnungsprogramm
Nach then und else erwartet der Compiler nur jeweils eine einzige Anweisung. Wenn du mehrere Anweisungen haben willst, musst du die mit begin und end einschließen:
Delphi-Quellcode:
if <Bedingung> then begin
Anweisung1 Anweisung2 ... end else begin Anweisung1 Anweisung2 ... end; |
Re: Kleines Rechnungsprogramm
Hai Final,
deinen Code kannst Du wesentlich verkürzen und damit mögliche Fehler vermeiden. In der Berechnung ist ja nur das Porto der verändernde Faktor. Also reicht es aus wenn Du dir in einer Variable den Betrag für das Porto speicherst und in den Berechnungen dann diese Variable verwendest:
Delphi-Quellcode:
Natürlich sollte verhindert werden das in den Editfeldern etwas anderes als gültige Zahlen stehen. Sonst würde bei der Umwandlung mit StrToFloat ein Fehler auftreten.
procedure TForm1.btn_TestenClick(Sender: TObject);
var netto : Extended; mwst : Extended; brutto : Extended; porto : Extended; Begin porto := 0; netto := strtofloat(edt_Betrag1.text) + strtofloat(edt_Betrag2.text) + strtofloat(edt_Betrag3.text); if netto < 100 then begin porto := 7.5; end; lbl_Porto.Caption := FloatToStr(porto); mwst := (netto + porto) * 0.16; lbl_Summe1.caption := FloatToStr(mwst); brutto := (netto + porto) * 1.16; lbl_Summe2.caption := FloatToStr(brutto) end; Immer eines Berücksichtigen: Im Quellcode ist der Dezimalseperator ein "." ist (3.56 oder 2.78 ). Bei der Umwandlung mit StrToFloat wird aber der in Windows eingestellte ![]() |
Re: Kleines Rechnungsprogramm
kk danke leute ich hab zwar meinen fehler wegen der portoberechnung noch nich gerrafft aber immerhin läufts jetzt und ich verstehs ;)
mfg und thx final [edit] einen hab ich noch: wie bring ich denn delphi dazu das es auf 2 nachkommastellen rundet, und nich auf 4 so wie in meinem prog? mfg |
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