Autor Beitrag
dejavu
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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:
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 04.05.10 19:33 
Sorry, dachte das Programm wäre soweit verständlich. Ich versuche es mal etwas genauer zu beschreiben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.BEuroDollarClick(Sender: TObject);  // Klick auf den Button der Euro in Dollar umrechnet
const rKurs = 0.767283;     //rKurs ist der Umrechnungskurs den das Programm für die Rechnung verwendet
var rDollar,rEuro :real;    //rEuro ist der Wert in Euro, rDollar der Wert in Dollar
begin 
rEuro:= StrToFloat (EEuro.Text);     //Das Programm soll den Euro-Wert ins dazugehörige Edit-Feld schreiben ("EEuro")
rDollar:= rEuro/rKurs;               //Eigentliche Berechnung: Dollarwert = Eurowert / Kurs
EDollar.Text:= FloatToStr (rDollar); //Der Dollar-Wert ("rDollar")ins dazugehörige Edit-Feld ("EDollar") 
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 user profile iconNarses: Delphi-Tags hinzugefügt

---Moderiert von user profile iconNarses: 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 user profile iconNarses: Beiträge zusammengefasst---

Habe die genaue Beschreibung unter die Antwort von Martok gepinnt ;)
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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... user profile iconXions 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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
ausblenden Delphi-Quelltext
1:
2:
if procedure TForm1.Button1Click(Sender: TObject);
then... // ("..." = Anweisung)

aber das ist doch bestimmt falsch^^

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Di 04.05.10 19:53 
Wenn Du nur mit einem Button arbeiten willst geht im Prinzip so: in der ButtonProcedure
ausblenden 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

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
dejavu Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 04.05.10 19:56 
Hammer cool Alf, dass ist gerade wie Weinachten, Geburtstag, Ostern, Silvester .... gleichzeitig für mich! Vielen Dank!
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 04.05.10 20:36 
Öhm was ist denn jetzt falsch an meinem Quelltext? Das Programm will nicht mehr funzen.. :(
ausblenden 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);   // Klick auf den Button "BAusfuehren"
const rKurs = 0.767283;                               // Umrechnungskurs
var rDollar,rEuro :real;                              // Variablen: "rDollar" = Dollarwert, "rEuro" = Eurowert

begin                                                 // Programmstart
if (EEuro.text=''and (EDollar.text=''then exit;   // Wenn das Feld EEuro und EDollar leer ist, Programm beenden
if EDollar.text='' then                               // Wenn das Feld EDollar leer ist:
begin                                                 // Starte 1. If-Anweisung
rEuro:= StrToFloat (EEuro.Text);                      // Anfang Umrechnung Euro zu Dollar
rDollar:= rEuro/rKurs;                                // Dollarwert = Eurowert / Umrechnungskurs
EDollar.Text:= FloatToStr (rDollar);                  // Ende Umrechnung Euro zu Dollar
end;                                                  // Beende 1. If- Anweisung

if EDollar.text='' then                               // Wenn das Feld EDollar leer ist:
begin                                                 // Starte 2. If-Anweisung
rDollar:= StrToFloat (EDollar.Text);                  // Anfang Umrechnung Dollar zu Euro
rEuro:= rDollar*rKurs;                                // Eurowert = Dollarwert * Umrechnungskurs
EEuro.Text:= FloatToStr (rEuro);                      // Ende Umrechnung Dollar zu Euro

end;                                                  // Beende 2. if- Anweisung

end;                                                  // Beende Button procedure

end.                                                  // Beende Programm

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Di 04.05.10 20:45 
was soll den das:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
if EDollar.text='' then
begin                                                 
.....
end;

if EDollar.text='' then //<- müsste nicht hier EEuro.Text stehen
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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 04.05.10 20:47 
Leider keine Fehlermeldung, er Rechnet nur von Euro in Dollar, aber nicht umgekehrt.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Ich überprüfs mal.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Di 04.05.10 20:50 
jo, siehe Antwort von user profile iconALF.

//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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 04.05.10 20:52 
Ja, der Alf hat mal wieder recht, jetzt geht alles =)
Danke!

---Moderiert von user profile iconNarses: 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:
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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.