Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Taschenrechner delphi (https://www.delphipraxis.net/127090-taschenrechner-delphi.html)

thomasku 7. Jan 2009 16:51


Taschenrechner delphi
 
Hallo an alle,

Ich möchte einen Taschenrechner in delphi programmieren.
Ich habe bereits einen Programm dazu geschrieben, welches mit 2 Editfeldern(3 Ausgabe noch) auch einwandfrei funktioniert. (Dies war zwar nur Ganzzahlig allerdings hängt es bei mir nicht an den Ausführungsoperationen)

Mein "Neuer Rechner" soll nun follgendes leisten:
-er besitzt nur ein Editfeld und verschiedene Button für die Zahlen sowie Sonderzeichen die über Mouseklick aktiviert werden
(Die Eingabe der Zahlen habe ich über einen string gemacht der sich jeweils um die Zahl erweitert)
Allerdings habe ich nun follgendes Problem, dass ich keinerlei Idee habe wie ich es realisieren kann das, dieser eine 2.Zahl annimmt!

1.Idee war eine Case Anw allerdings wäre dann nach meinen Überlegungen nur eine Rechenoperation hintereinander ausführbar.

2.Eine Schleife allerdings fehlt mir die nötige Idee für eine Abbruchbediengung

Habe sehr lange nicht programmiert und früher nicht mit einen so "komfortablen" Programm Wie delphie gearbeitet.
Oberon 2

Eine weitere Idee wäre natürlich eine Art UPN allerdings denke ich das dies bedeutend zu weit für diese Aufgabe führt!

Zusammenfassend möchte ich also gern wissen wie ich das Editfeld erweitern kann das eine Mehrfacheingabe möglich ist.
(eine 2fach Eingabe wäre mir völlig ausreichend :) )

Lg thomas

[edit=SirThornberry]Delphie durch Delphi ersetzt - Mfg, SirThornberry[/edit]

Jürgen Thomas 7. Jan 2009 17:03

Re: Taschenrechner delphie
 
Hallo,

Du benötigst zwei private Variablen: number1 und number2, dazu als Ergebnis result. Beim Start der Anwendung werden number1 und number2 auf 0 gesetzt; wenn eines der Rechenzeichen gedrückt wird, wird der aktuelle input.Text in number1 konvertiert und dann wieder auf leer gesetzt; wenn das Gleichheitszeichen gedrückt wird, wird der jetzt aktuelle input.Text in number2 konvertiert; dann wird gerechnet und das Ergebnis angezeigt.

Das sollte als Beschreibung reichen.

Jürgen

PS. Ich bin sicher, dass Du über die Forumssuche viele Taschenrechner findest und von dort Ideen übernehmen kannst.

Draos 7. Jan 2009 18:16

Re: Taschenrechner delphie
 
Für 2 oder mehr Operanden bei gleichen Operatoren reicht eine Schleife, die den String nach Operatoren durchschaut und an diesen dann die Variablen konvertiert.
Du benötigst 2 Variablen. Eine für die Lösung und eine, die sich die Stelle des letzten Operator merkt (am Anfang = 1). Dann immer die Lösung mit der Variable zwischen den letzten Operator und den jetzigen erweitern.

Bei verschiedenen Operatoren musste rekursiv werden.

thomasku 7. Jan 2009 19:53

Re: Taschenrechner delphi
 
Hallo,

Danke euch beiden fuer die fixen Antworten, werde es gleich mal ausprobieren!

Lg thomas

DP-Maintenance 7. Jan 2009 20:53

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage

thomasku 8. Jan 2009 18:34

Re: Taschenrechner delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hiho nochmal :)

Habe mal einen ersten Entwurf angehängt.
Dabei habe ich allerdings noch 2 Fragen:
1.) Warum benötige ich 2 Variabeln?
Ich kann doch die erste Zahl in einer Variabeln speichern und die 2te Zahl im Editfeld stehen lassen.
Welches vorher natürlich leer gesetzt wurde. Dann diese beiden Werte zur Bestimmung heran ziehen, allerdings habe ich auf dieses Art und Weise nie ein vernümpftiges Ergebnis erhalten.

2.)In einer Prozedure wollte ich eine bestimmte Stelle eines Strings (Editfeld) verwenden und musste mir dazu einen Hilfsstring definieren. Warum?
Edit1.text[t]:=... (*war nciht zulässig *)
dafür aber
s:=edit1.text;
s[t]:=...
(t hatte einen festen Wert)

Jürgen Thomas 8. Jan 2009 18:37

Re: Taschenrechner delphi
 
Zitat:

Zitat von thomasku
1.) Warum benötige ich 2 Variabeln?
Ich kann doch die erste Zahl in einer Variabeln speichern und die 2te Zahl im Editfeld stehen lassen.
Welches vorher natürlich leer gesetzt wurde.

Zum Berechnen brauchst Du sowieso zwei Zahlen. Wenn mehrere Berechnungen ausgeführt werden sollen, kannst Du immer auf dieselben Variablen zugreifen. (Es ist nicht notwendig, aber wegen der Übersichtlichkeit des Programms schöner - jedenfalls meiner Meinung nach.) Jürgen

Übrigens finde ich es eher unfreundlich, einen (relativ kurzen) Code als Anhang beizufügen, statt direkt einzufügen.

thomasku 8. Jan 2009 18:56

Re: Taschenrechner delphi
 
Hallo Jürgen,

Danke für deine prompte Antwort!

Das mit der Übersichtlichkeit sehe ich gerne ein, aber mit nur einer hat es irgendwie nicht ganz bei mir geklappt :). (dachte das hat evtl einen speziellen Hintergrund)

Evtl. noch eine Idee zur 2ten Frage?

(Durch die ganzen Buttons wollte ich dieses Programm lieber Anhängen, aber werde es in Zukunft posten)

Lg Thomas

Beat 11. Dez 2012 14:38

AW: Taschenrechner delphi
 
Hallo :D

Du brauchst genau 3 Variablen :)
Einmal für das zwischenergebnis, nennen wir es 'zwischen' und dem Typ Boolean.
Damit fragen wir ab, ob das zwischen ergebnis vorhanden ist.

Dann brauchen wir eine variable für das Rechenzeichen, nennen wir sie 'rz' mit dem Typ Integer.

Die dritte Variable ist das abgespeicherte Zwischenergebnis des 1. Edit Feldes. Bedeutet, du schreibst eine Zahl in das Editfeld, drückst auf den Button '+' . In dem Button wird dann unter anderem, die Zahl die in dem Edit Feld stand in die Variable gespeichert. Nennen wir sie 'Ergebnis' , vom typ real.

So nun will ich dir den einfach Quelltext des + Buttons geben. Die Schleifen sind mit berücksichtigt, heißt du kannst mehrere Male hintereinader eingeben.
Delphi-Quellcode:
procedure TForm1.Button13Click(Sender: TObject);
begin
try
     If zwischen = true then Ausgabe.Text := FloatToStr (Ergebnis + StrToFloat (Ausgabe.Text)); // Das ist die Schleife! //
        zwischen := true ;   // Die Variable zwischen wird auf true 'wahr' gesetzt, damit die Schleife funktioniert //
        Ergebnis := StrToFloat (Ausgabe.Text) ;  // Das was im Edit feld stand, wird gespeichert //
        rz := 1 ;        // Das ist für das Ausrechnen wichtig, da arbeiteen wir dann mit einer IF Schleife //
        form1.Ausgabe.Text := '' ; // Das Feld wird für die nächste Eingabe bereicht gemacht //
except Showmessage ('Bitte 2 oder mehr Zahlen addieren !'); // Für etwaige Fehlermeldungen //

end;
end;
So damit das oben funktioniert solltest du in der Form Create auch noch was schreiebn ( doppelklick auf das Formular)
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Ausgabe.text := '' ;
zwischen := false;
rz := 0 ;
end;
// Keine Erklräung notwendig //
end;
Ich hoffe das ist erstmal ein guter Anfang für dich. Im - mal und geteilt Button musst du rz natürlich andere Werte zuweisen !

DeddyH 11. Dez 2012 15:04

AW: Taschenrechner delphi
 
Öhm, das ist aber keine Schleife, schon gar keine If-Schleife. Außerdem sollte man weder auf true prüfen noch benannte Instanzen verwenden. Nur weil die Klasse TForm1 heißt, bedeutet das ja nicht, dass die Instanzvariable zwingend Form1 heißen muss. Stattdessen besser self verwenden oder ganz weglassen.

[edit] Ich habe gerade erst gesehen, dass der Thread ja schon fast 4 Jahre alt ist :shock: [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz