Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Delphi Mehrere Zahlen Rechnen (https://www.delphipraxis.net/201947-mehrere-zahlen-rechnen.html)

TurboMagic 12. Sep 2019 18:43

AW: Mehrere Zahlen Rechnen
 
Zitat:

Zitat von KodeZwerg (Beitrag 1445870)
Dir fehlt an sehr vielen Stellen ein Terminator Zeichen.
Beispiel aus
Delphi-Quellcode:
procedure TForm4.EinsButtonClick(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'1'
end;
würde ich ein
Delphi-Quellcode:
procedure TForm4.EinsButtonClick(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'1';
end;
machen. Vielleicht liegt darin Dein Problem?

Nein, daran liegt es nicht, auch wenn es säuberer mit ist.
Es gibt nämlich eine kleine wenig beachtete Spezialregel für die Syntax:
vor dem letzten End des Blocks darf das ; weggelassen werden ;-)

Der Compiler meckert da nicht und das Programm tut, was man programmiert hat.

Delphi-Laie 12. Sep 2019 20:31

AW: Mehrere Zahlen Rechnen
 
Zitat:

Zitat von KodeZwerg (Beitrag 1445870)
Dir fehlt an sehr vielen Stellen ein Terminator Zeichen.
Beispiel aus
Delphi-Quellcode:
procedure TForm4.EinsButtonClick(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'1'
end;
würde ich ein
Delphi-Quellcode:
procedure TForm4.EinsButtonClick(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'1';
end;
machen. Vielleicht liegt darin Dein Problem?

Ist das Semikolon gemeint?

Wenn irgendwo eines fehlen täte, würde der Compiler es doch gleich monieren!

Tatsächlich ist das Semikolon in Pascal kein Terminatorzeichen. Man könnte es genausogut auch vor jede Anweisung schreiben, das wäre auch möglich und würde genausogut funktionieren. Doch es ist auch kein Einleitungszeichen.

In Wirklichkeit ist es ein (Ab)Trenn(ungs)zeichen und dient dazu, Anweisungen voneinander zu trennen (und genau dafür benutze ich es auch).

Den Unfug, daß hinter jeder Anweisung ein Semikolon zu setzen sei, ja gesetzt werden muß, las ich sogar schon in einem Delphibuch.

hoika 13. Sep 2019 06:38

AW: Mehrere Zahlen Rechnen
 
Hallo,
mehrere Zahlen + Klammern -> Formelparser.

Das ist dann kein Array, sondern ein Baum.
Die Knoten sind das jeweilige Rechenzeichen bzw. die Klammer.

Klingt etwas komplizierter -> ist es auch.

KodeZwerg 13. Sep 2019 07:25

AW: Mehrere Zahlen Rechnen
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1445924)
In Wirklichkeit ist es ein (Ab)Trenn(ungs)zeichen und dient dazu, Anweisungen voneinander zu trennen (und genau dafür benutze ich es auch).

Mag noch etwas früh sein, da das Wort "trennen" bei Dir vorkommt, nenn ich es halt terminieren, sprich "Anweisung ist hier am Ende und die nächste kann kommen" :-)
Zitat:

Zitat von TurboMagic (Beitrag 1445914)
Es gibt nämlich eine kleine wenig beachtete Spezialregel für die Syntax:
vor dem letzten End des Blocks darf das ; weggelassen werden ;-)

Ohhhkay, das war mir neu, Danke für den Hinweis.
Zitat:

Zitat von hoika (Beitrag 1445964)
mehrere Zahlen + Klammern -> Formelparser.

Das tat ich am Ende dann auch, zum erlernen war mir das mit zwei Edit's ausreichend.
Sehr guter Tipp!

Einen guten Morgen und einen schönen Tag euch allen!

DelphiDustin 13. Sep 2019 07:57

AW: Mehrere Zahlen Rechnen
 
Zitat:

Zitat von hoika (Beitrag 1445964)
Hallo,
mehrere Zahlen + Klammern -> Formelparser.

Jo danke hatte das auch irgendwo gelesen hättest du vielleicht eine seite wo man sich gut zu dem Thema einlesen kann? Ich finde im Internet irgendwie nichts gutes.

Jumpy 13. Sep 2019 09:10

AW: Mehrere Zahlen Rechnen
 
Ich würde ehrlich gesagt den Formelparser und somit das geklammere erstmal weg lassen und einen ganz einfachen Taschenrechner nachprogrammieren.

Du bräuchtest einen Buffer für die aktuell eingegebene Zahl und dann einen Speicher/Variable für Zahlen 1 bis 3, sowie zwei Speicher für die Rechenoperationen.

Wird eine Zahl eingegeben wird sie in den Buffer geschrieben, wird ein Operator eingegeben kommt die aktuelle Zahl vom Buffer in den Speicher für Zahl1, der Operator in den Speicher dafür und es wird der Buffer geleert und auf eine neue Zahleingabe gewartet, usw. usw.

Das ist eingetlich eine schöne Übung, um das logische Denken zu üben, wenn man das so umsetzt. Ein bißchen wie eine Statemachine für Anfänger.

Man kann das dann auch so umsetzen, das man nur eine Event-Prozedur hat für "Zahl wird eingegeben" und eine für "Operator wird eingegeben". Hierzu könnte man z.B. mit der Eigenschaft "Tags" der Button arbeiten.

Will man bei der Eingabe Komma-Zahlen zulassen, muss man sich nochmal ein paar Gedanken Extra machen.

hoika 13. Sep 2019 11:54

AW: Mehrere Zahlen Rechnen
 
Hallo,
eine ausführliche Anleitung zu Formelparsern:
https://maciejewski.com/en/implement...ser-in-delphi/

Vorsicht:
Ist nicht leicht.


Deshalb auch von mir der Vorschlag, erst mal was einfacheres zu machen.

KodeZwerg 16. Sep 2019 07:18

AW: Mehrere Zahlen Rechnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ohne parsen aber mit Berechnungen ohne limit hab ich mal im Anhang ein binary plus source hochgeladen.
Vielleicht hilft es Dir bei Deiner "ich kann nur einmal Rechnen dann ist aus" Problematik.
Desweiteren erfolgen alle Button abfragen über Ihre TAG property so das man nur eine Methode für alle buttons nutzt (okay, da sind zwei um Zahlen von Operationen zu trennen *g*)

Good luck & have a nice week!


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 Uhr.
Seite 2 von 2     12   

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