Autor |
Beitrag |
dejavu
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 04.05.10 18:47
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
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: 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.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: 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).
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
dejavu 
Hält's aus hier
Beiträge: 13
|
Verfasst: 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: www.fotos-hochladen....srechnervpya5q92.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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: 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
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Di 04.05.10 19:44
Was dein Programm macht war schon klar
Ist ja auch net sooo komplex
Die Frage war ja eben, was passieren soll, nicht was passiert... Xions Vorschlag ist da duchaus gut.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
dejavu 
Hält's aus hier
Beiträge: 13
|
Verfasst: 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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: 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.
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
dejavu 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 04.05.10 19:56
Hammer cool Alf, dass ist gerade wie Weinachten, Geburtstag, Ostern, Silvester .... gleichzeitig für mich! Vielen Dank!
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 04.05.10 20:16
Für solche Fälle empfehle ich das Delphi-Wikibook und Christian's Crashkurs. Da lernt man wie If-Abfragen, Schleifen usw aufgebaut sind. Alle kleinen Grundlagen also.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
dejavu 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 04.05.10 20:36
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 04.05.10 20:44
was sagt Delphi denn als Fehlermeldung. Fehlermeldungen bitte immer angeben, das erleichtert die suche.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: 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
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
dejavu 
Hält's aus hier
Beiträge: 13
|
Verfasst: 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
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Di 04.05.10 20:50
jo, siehe Antwort von ALF.
//Edit: zu spät -.-
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
dejavu 
Hält's aus hier
Beiträge: 13
|
Verfasst: 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|