AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Taschenrechner delphi

Ein Thema von thomasku · begonnen am 7. Jan 2009 · letzter Beitrag vom 11. Dez 2012
Antwort Antwort
Seite 1 von 2  1 2   
thomasku

Registriert seit: 4. Jan 2009
31 Beiträge
 
#1

Taschenrechner delphi

  Alt 7. Jan 2009, 17:51
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]
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#2

Re: Taschenrechner delphie

  Alt 7. Jan 2009, 18:03
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.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Draos

Registriert seit: 12. Aug 2008
42 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Taschenrechner delphie

  Alt 7. Jan 2009, 19:16
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.
  Mit Zitat antworten Zitat
thomasku

Registriert seit: 4. Jan 2009
31 Beiträge
 
#4

Re: Taschenrechner delphi

  Alt 7. Jan 2009, 20:53
Hallo,

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

Lg thomas
  Mit Zitat antworten Zitat
7. Jan 2009, 21:53
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage
thomasku

Registriert seit: 4. Jan 2009
31 Beiträge
 
#6

Re: Taschenrechner delphi

  Alt 8. Jan 2009, 19:34
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)
Angehängte Dateien
Dateityp: zip taschenrechner_131.zip (4,2 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#7

Re: Taschenrechner delphi

  Alt 8. Jan 2009, 19:37
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.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
thomasku

Registriert seit: 4. Jan 2009
31 Beiträge
 
#8

Re: Taschenrechner delphi

  Alt 8. Jan 2009, 19:56
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
  Mit Zitat antworten Zitat
Beat

Registriert seit: 30. Nov 2012
12 Beiträge
 
#9

AW: Taschenrechner delphi

  Alt 11. Dez 2012, 15:38
Hallo

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 !
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.314 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Taschenrechner delphi

  Alt 11. Dez 2012, 16:04
Ö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 [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (11. Dez 2012 um 16:12 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf