| Autor |
Beitrag |
detke
      
Beiträge: 55
WIN XP
Delphi 5
|
Verfasst: So 27.09.09 10:58
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
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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.
_________________ We are, we were and will not be.
|
|
detke 
      
Beiträge: 55
WIN XP
Delphi 5
|
Verfasst: So 27.09.09 11:02
Sollte schon Komma zahlen haben,
wie würde den der Code aussehen?
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 55
WIN XP
Delphi 5
|
Verfasst: 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 |
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 27.09.09 11:17
Dazu fällt mir erst einmal nur der Link zu einem sehr guten Crashkurs ein...
crashkurs.christian-stelzmann.de
und die neue Version speziell ab Turbo Delphi:
www.christian-stelzm...shkurs_reloaded.html
Ein weiteres gutes Online-Buch:
de.wikibooks.org/wik...grammierkurs:_Delphi
Denn dir ist offenbar gar nicht klar was Funktionen eigentlich sind, und bevor du das nicht weißt, wirst du auch nicht damit arbeiten können...
Das steht in dem Crashkurs an dieser Stelle:
www.christian-stelzm...zedurenundfunktionen
|
|
detke 
      
Beiträge: 55
WIN XP
Delphi 5
|
Verfasst: 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
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 55
WIN XP
Delphi 5
|
Verfasst: 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
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: 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
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
noobie123
      
Beiträge: 29
|
Verfasst: 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":
www.bergt.de/worksho...i/html/projekt11.htm
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: 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
|
|
|