Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Edits Multiplizieren?
detke - So 27.09.09 10:58
Titel: Edits Multiplizieren?
HEy,
hab mal wieder mit Delphi angefangen und scheitere vergebens!
Ich möchte nen kleinen Rechner für meinen Sohn bauen, der den BRaucht füpr ein Online Spiel.
Er soll eig.nur edit1*edit2 rechnen.
Mein code sieht so aus:
edit3.text := edit1.text*edit2.text;
Leider bringt er ein Error, is ja klar, da man ja Texte nich mit einander Multiplizieren kann.
Wie mache ich das, dass die Zahlen in edit1 und edit2 Multipliziert werden?
Lg detke
Gausi - So 27.09.09 11:00
Einen String wandelt man mit StrToInt in einen Integer um, zurück geht es mit StrToInt. Wenn man auch Kommazahlen zulassen möchte, geht das mit StrToFloat und FloatToStr, FloatToStrF.
detke - So 27.09.09 11:02
Sollte schon Komma zahlen haben,
wie würde den der Code aussehen?
jaenicke - So 27.09.09 11:05
Naja, du musst eben die Funktionen benutzen, z.B. die für die Umwandlung in eine Zahl:
Delphi-Quelltext
1:
| StrToFloat(Edit1.Text) |
detke - So 27.09.09 11:15
also mach ich
Quelltext
1: 2: 3:
| StrToFloat(Edit1.Text) StrToFloat(Edit2.Text) Edit3.text := edit1.text*edit2.text |
detke - So 27.09.09 11:20
Mir ist schon bewusst was FUnktionen sind, leider habe ich vor 2 jahren mit Delphi programmierung aufgehört, da ich mich um meine beiden Kinder gekümmert habe, deswegen ist nicht viel hängen geblieben!
jaenicke - So 27.09.09 11:24
Sorry, aber das sind absolute Grundlagen. Da wirst du dir Funktionen wohl noch einmal anschauen müssen bzw. wie du damit arbeitest...
Denn so wie du es eben geschrieben hast, ignorierst du das Ergebnis der Funktion einfach statt damit zu arbeiten.
Was du machen musst ist doch den Text der beiden Edits in Zahlen umzuwandeln, diese miteinander zu multiplizieren und dann das Ergebnis wieder in einen Text umzuwandeln, den du in das dritte Edit legen kannst.
Ok, kleines Beispiel:
Delphi-Quelltext
1:
| EditResult.Text := FloatToStr(4 * StrToFloat('1,3')); |
Damit würde dann 5,2 im Edit landen.
detke - So 27.09.09 11:27
Ich glaub ich bin zudumm,
Hab mir den Crash Kurs mal angesehen, weis nun was Funktionen sind.
FloatToStr(4 * StrToFloat('1,3'));
Da fehlt mir etwas wissen
Was rechnest du hier genau?
Bergmann89 - So 27.09.09 13:50
Hey,
erst wird der String ('1,3') in eine Kommazahl umgewandelt (1.3). danach wird sie mit 4 multipliziert (5.2) und danach wird sie wieder in einen String umgewandelt ('5,2') und im Edit ausgegeben.
MfG Bergmann
noobie123 - So 27.09.09 16:44
hallo,
hier die lösung:
Delphi-Quelltext
1: 2: 3:
| private z1, z2, e1: real; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); begin
z1 := StrToFloat(Edit1.text); z2 := StrToFloat(Edit2.text); e1 := z1 * z2; Edit3.Text := FloatToStr(e1);
end; |
hier noch weitere beispiele zum thema "rechner":
http://www.bergt.de/workshop/delphi/html/projekt11.htm
Yogu - So 27.09.09 17:25
noobie123 hat folgendes geschrieben : |
hallo,
hier die lösung: |
Das bringt dem Fragesteller jetzt am allerwenigsten. Es nützt überhaupt nichts, einen so simplen Code per Copy&Paste einzubauen und nicht einmal zu verstehen.
Ganz nebenbei sollte man anstatt privater Felder lieber lokale Variablen benutzen...
Ich probier's jetzt auch nochmal. Weißt du, was das besondere an Funktionen ist? Sie liefern einen Wert zurück. Diesen kannst du in einen
Ausdruck, also in einen Term einbauen.
StrToFloat('4,7') ist demnach
genau dasselbe wie
4.7. Schreibst du jetzt anstatt der
Stringkonstante '4,7' die Variable
Edit1.Text, wird der Funktionsaufruf dynamischer. Er repräsentiert nun zu jeder Zeit den Inhalt des Eingabefelds, und zwar als Fließkommazahl.
Wenn du das selbe noch mit dem anderen Edit machst, hast du am Ende zwei Fließkommazahlen, die du einfach miteinander multiplizieren kannst. Wie ich oben schon geschrieben habe, kann man die Rückgabewerte von Funktionen so wie einfache Zahlen verwenden.
Dann wären wir bei:
StrToFloat(Edit1.Text) * StrToFloat(Edit2.Text)
Das Ergebnis dieses Terms ist aber immer noch eine Fließkommazahl. Edits können aber nur Zeichenketten, also Strings, darstellen. Und um eine Fließkommazahl in einen String umzuwandeln, kannst du die Funktion
FloatToStr verwenden. Ihr übergibst du als Parameter eben das Produkt und bekommst als Rückgabewert den String. Diesen kannst du dem Text von
Edit3 zuweisen.
Wenn irgendwas unklar ist, stelle bitte eine direkte Frage, auf die können wir gezielter antworten.
Grüße,
Yogu
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!