Entwickler-Ecke
Sonstiges (Delphi) - Delphi-Neuling hat Frage zu einem Währungsrechner-Programm
dejavu - Di 04.05.10 18:47
Titel: Delphi-Neuling hat Frage zu einem Währungsrechner-Programm
Hallo, ich habe gerade in Delphi einen Währungsrechner gebaut der auch soweit funktioniert. Allerdings stört mich, dass ich 2 Buttons zum Umrechnen habe (einen für Euro in Dollar "BEuroDollar" und einen für Dollar in Euro "BDollarEuro").
Kann man das Programm nicht irgendwie so verfassen, dass ich nur einen Button brauche um die jeweiligen Werte umzurechnen? Also drücke den gleichen Button wenn ich Euro in Dollar umrechnen will und ungekehrt?
Mein Quelltext sieht momentan so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.BEuroDollarClick(Sender: TObject); const rKurs = 0.767283; var rDollar,rEuro :real; begin rEuro:= StrToFloat (EEuro.Text); rDollar:= rEuro/rKurs; EDollar.Text:= FloatToStr (rDollar); end;
procedure TForm1.BDollarEuroClick(Sender: TObject); const rKurs = 0.767283; var rDollar,rEuro :real; begin rDollar:= StrToFloat (EDollar.Text); rEuro:= rDollar*rKurs; EEuro.Text:= FloatToStr (rEuro);
end;
end. |
"BEuroDollar" = Button um Euro in Dollar zu rechnen
"BDollarEuro" = Button um Dollar in Euro zu rechnen
"rKurs" = Umrechnungskurs
"EEuro" = Edit-Feld wo man den Euro-Wert reinschreibt
"EDollar" = Edit- Feld wo man den Dollar-Wert reinschreibt
Moderiert von
Narses: Delphi-Tags hinzugefügt
Martok - Di 04.05.10 19:18
Die Frage ist doch: wie macht der User dem Programm begreiflich, welcher Wert jetzt der ist, den er umgerechnet haben will?
Klar, man könnte das über einen Button für beides und eine If-Unterscheidung machen. Aber: dann brauchst du eine Auswahlmöglichkeit für die Richtung.
Xion - Di 04.05.10 19:21
Ich würde sagen, er soll einfach immer das leere Feld ausfüllen (das geht per if). Alternativ könnte man das, was zuletzt verändert wurde, als ausgangswert nehmen (beim OnChange des Edits speichern welches verändert wurde).
dejavu - Di 04.05.10 19:33
Sorry, dachte das Programm wäre soweit verständlich. Ich versuche es mal etwas genauer zu beschreiben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.BEuroDollarClick(Sender: TObject); const rKurs = 0.767283; var rDollar,rEuro :real; begin rEuro:= StrToFloat (EEuro.Text); rDollar:= rEuro/rKurs; EDollar.Text:= FloatToStr (rDollar); end; |
Der zweite Button macht halt das gleiche nur umgekeht (Dollar in Euro).
So sieht die Bedienoberfläche aus:
http://www.fotos-hochladen.net/view/whrungsrechnervpya5q92.jpg
Konntest du mein Programm jetzt nachvollziehen?
Danke für deine Hilfe!
Moderiert von
Narses: Delphi-Tags hinzugefügt
---
Moderiert von
Narses: Beiträge zusammengefasst---
Sorry wollte an den User über dir schreiben. Könntest du mir vielleicht einmal als Quelltext verfassen, wie das mit so einer if beziehung dann aussieht? Danke im vorraus.
---
Moderiert von
Narses: Beiträge zusammengefasst---
Habe die genaue Beschreibung unter die Antwort von Martok gepinnt ;)
ALF - Di 04.05.10 19:38
@Xion hat es Dir doch schon geschrieben!
Wenn Du in dem einem editfeld was einträgt wird das andere gelöscht, und ummgekehrt. Nun brauchst Du auch nur ein Button.
Gruss Alf
Martok - Di 04.05.10 19:44
Was dein Programm macht war schon klar ;)
Ist ja auch net sooo komplex :P
Die Frage war ja eben, was passieren soll, nicht was passiert...
Xions Vorschlag ist da duchaus gut.
dejavu - Di 04.05.10 19:46
Bin nur leider n Neuling und würde gerne wissen wie das ganze in Delphi mit if / then / else aussieht. Könnte da jemand den Quelltext kurz schreiben?
Ich würde jetzt anfangen mit
Delphi-Quelltext
1: 2:
| if procedure TForm1.Button1Click(Sender: TObject); then... |
aber das ist doch bestimmt falsch^^
Moderiert von
Narses: Delphi-Tags hinzugefügt
ALF - Di 04.05.10 19:53
Wenn Du nur mit einem Button arbeiten willst geht im Prinzip so: in der ButtonProcedure
Delphi-Quelltext
1: 2: 3: 4: 5:
| if (edit1.text='') and (edit2.text='') then exit; if edit1.text='' then rechne dollar zu euro; if edit2.text='' then rechne euro zu dollar |
mal auf die schnelle. :wink:
Gruss Alf
dejavu - Di 04.05.10 19:56
Hammer cool Alf, dass ist gerade wie Weinachten, Geburtstag, Ostern, Silvester .... gleichzeitig für mich! Vielen Dank!
dejavu - Di 04.05.10 20:36
Öhm was ist denn jetzt falsch an meinem Quelltext? Das Programm will nicht mehr funzen.. :(
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:
| procedure TForm1.BAusfuehrenClick(Sender: TObject); const rKurs = 0.767283; var rDollar,rEuro :real; begin if (EEuro.text='') and (EDollar.text='') then exit; if EDollar.text='' then begin rEuro:= StrToFloat (EEuro.Text); rDollar:= rEuro/rKurs; EDollar.Text:= FloatToStr (rDollar); end; if EDollar.text='' then begin rDollar:= StrToFloat (EDollar.Text); rEuro:= rDollar*rKurs; EEuro.Text:= FloatToStr (rEuro); end; end; end. |
Moderiert von
Narses: Delphi-Tags hinzugefügt
elundril - Di 04.05.10 20:44
was sagt Delphi denn als Fehlermeldung. Fehlermeldungen bitte immer angeben, das erleichtert die suche.
lg elundril
ALF - Di 04.05.10 20:45
was soll den das:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| if EDollar.text='' then begin ..... end;
if EDollar.text='' then begin ..... end; |
Gruss Alf
dejavu - Di 04.05.10 20:47
Leider keine Fehlermeldung, er Rechnet nur von Euro in Dollar, aber nicht umgekehrt.
---
Moderiert von
Narses: Beiträge zusammengefasst---
Ich überprüfs mal.
Xion - Di 04.05.10 20:50
jo, siehe Antwort von
ALF.
//Edit: zu spät -.-
dejavu - Di 04.05.10 20:52
Ja, der Alf hat mal wieder recht, jetzt geht alles =)
Danke!
---
Moderiert von
Narses: Beiträge zusammengefasst---
Nun habe ich noch einen letzten Wunsch:
Ich möchte einen zusätlichen Button haben ("BReset"), der die Werte die in "EEuro" und "EDollar" stehen zurücksetzt. Also so, dass wieder gar nichts drinne steht, sodass man die Werte nicht immer manuell löschen muss wenn man eine neue Zahl umrechnen möchte. Geht das auch?
Edit: (Jaa ich habe die Edit-Funktion kennengelernt ;))
Habe es am anfang so versucht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.BResetClick(Sender: TObject); begin EEuro.Text:= ("") EDollar.Text:= ("") end; end. |
Aber das mochte der liebe Borland nicht haben.
Illegal character input file: "" ($22)
Edit:
Aaah Fehlerquelle gefunden.. 1. falsche Zeichen habe "" statt '' verwendet und am Ende kein Semikolon geschrieben :)
Danke für eure Hilfe.
Moderiert von
Narses: Delphi-Tags hinzugefügt
elundril - Di 04.05.10 21:30
klar. mit edit.text bekommst du den text, mit := weißt du einer variablen etwas zu und '' ist der leerstring. jetzt darfst du mal puzzlen und schauen ob du es zusammenkriegst- ;)
lg elundril
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!