Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Taschenrechner mit Random-Rechenoperation
Delete - Sa 11.07.09 17:51
Titel: Taschenrechner mit Random-Rechenoperation
Hallo Leute,
ich bin gerade dabei einen Taschenrechner zu programmieren, der zusätzlich zu den üblichen "+,-,*,/" auch noch eine zufällig generierte Rechenoperation ausführen soll.
Dazu habe ich einen array gebastelt, in dem alle oben genannten Operationen drin stehen.
Weiter geht's dann damit:
Delphi-Quelltext
1: 2: 3: 4: 5:
| zahl1 := edit1.Text; zahl2 := edit2.Text; rechnung := strtofloaT(zahl1+rechenoperationen[random(3)]+zahl2);
label1.Caption := floattostr(rechnung); |
Allerdings gibt's da ne Inkompatibilitäts-Fehlermeldung, wegen Real und String.
Meine Frage nun: Gibt es etwas wie die eval-Funktion in PHP, die dafür sorgt, dass "rechnung" zu einem richtigen Float-Wert wird, also dass das Teil funktioniert?
Gr33tZ
Rn
jakobwenzel - Sa 11.07.09 17:55
Nein, sowas wie eval gibts nicht, da Delphi eine kompilierte Sprache ist.
Warum lässt du dir nicht einfach eine zufällige Zahl zwischen 0 und 3 erzeugen und machst dann je nach Zahl eine Rechenoperation?
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| operation:=random(4); if operation = 0 then else if operation = 1 then [...] |
Oder besser:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| operation:=random(4); case operation of 0: ; 1: ; 2: ... 3: ... end; |
Delete - Sa 11.07.09 18:11
Ja mittlerweile mache ich das ja auch so ähnlich.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var zufallszahl : integer; begin randomize;
zufallszahl := random(3);
if zufallszahl = 0 then button2click(self); ... |
Wozu ist eingentlich dieser "Sender" da? Ich hab da jetzt nur "self" reingeschrieben, weil es funktioniert hat ^^
jakobwenzel - Sa 11.07.09 18:20
Man kann mehreren Buttons den gleichen Ereignisbehandler zuordnen und dann mittels Sender unterscheiden welcher gedrückt wurde.
Randomize sollte nur einmal beim Programmstart, zB in FormCreate aufgerufen werden und nicht bei jeder Zufallszahl.
Delete - Sa 11.07.09 18:43
Okay. Dann hab ich da ja genau richtig gedacht, also was den Sender angeht ^^
Danke für die Info ^^
Jakob_Ullmann - Sa 11.07.09 18:54
jakobwenzel hat folgendes geschrieben : |
| Nein, sowas wie eval gibts nicht, da Delphi eine kompilierte Sprache ist. |
Was hat das eine damit zu tun? Eine Interpreter muss nicht zwangsläufig einen Parser bereistellen, und ein Compiler kann dies durchaus aufgrund des geringen Arbeitsaufwands tun.
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!