![]() |
Taschenrechner (Anfänger) Problem mit Minuszahlen
Hallo ich wollte fragen ob mir jemand ein paar Tipps oder Beispiele für einen Delphi Taschenrechner geben kann.
Ich meine damit nur beispiele wie ich in einen Edit1.Text und/oder im Label1.Caption Minuszahlen anzeigen lassen kann. Dazu soll er die Minuszahlen dann noch weiter rechnen. ( Beispiel: 9-9-9-9 = -18 ) Falls jemand den Quelltext sehen möchte bitte schreiben dann setze ich in rein. Danke schon mal im vor raus.:thumb: |
AW: Taschenrechner (Anfänger) Problem mit Minuszahlen
Zitat:
SourceCode ist eigentlich immer gut wenn man bei einem konkreten Problem helfen soll. In diesem Fall wäre es interessant, was du bereits gemacht hast. Für einen Anfänger hört sich das jetzt vielleicht schwierig an, aber man sollte niemals die GUI / Grafische Elemente zur Datenerhaltung benutzen/"missbrauchen". Ein Label zeigt etwas an. Die Daten zur Anzeige werden aus einer Variablen geliefert. Sobald sich die Variable ändert, updatet sich das Label. In einfachster Form über Properties realisierbar. Generell kann ein Label alles mögliche anzeigen. Setze ein Label auf deine Form und mache einen EventHandler für das OnShow Ereignis der Form.
Delphi-Quellcode:
Du wirst sehen, dass die Zahl -18 vom Label angezeigt wird. Eigentlich kein Hexenwerk.
type
TForm1 = class(TForm) private MyVar: Integer; // Nur um mal bei Ganzzahlen zu bleiben end; implementation procedure TForm1.OnShow(Sender: TObject); begin MyVar := -18; Label1.Caption := IntToStr(MyVar); end; Um das jetzt automatisiert zu machen, kannst du auf die bereits erwähnten Properties zurückgreifen. Beispiel sähe dann so aus:
Delphi-Quellcode:
type
TForm1 = class(TForm) private FMyVar: Integer; // Nur um mal bei Ganzzahlen zu bleiben procedure SetMyVar(Value: Integer); property MyVar: Integer read FMyVar write SetMyVar; end; implementation procedure TForm1.OnShow(Sender: TObject); begin MyVar := -18; Label1.Caption := IntToStr(MyVar); end; procedure TForm1.SetMyVar(Value: Integer); begin FMyVar := Value; Label1.Caption := IntToStr(FMyVar); // Hierdurch wird das Label beim Aktualisieren der Property automatisch auf den neuen Wert gesetzt end; |
AW: Taschenrechner (Anfänger) Problem mit Minuszahlen
Ok danke ich mache das jetzt gerade in In real.
Delphi-Quellcode:
unit Taschenrechner;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math, Buttons; type TForm1 = class(TForm) Gleich: TButton; Addieren: TButton; Subtrahieren: TButton; Multiplizieren: TButton; Dividieren: TButton; Edit1: TEdit; Zahl1: TButton; Zahl2: TButton; Zahl3: TButton; Zahl4: TButton; Zahl5: TButton; Zahl6: TButton; Zahl7: TButton; Zahl8: TButton; Zahl9: TButton; Label1: TLabel; Zahl0: TButton; Aus: TButton; Rechenweg: TLabel; C: TButton; procedure Zahl1Click(Sender: TObject); procedure AusClick(Sender: TObject); procedure AddierenClick(Sender: TObject); procedure SubtrahierenClick(Sender: TObject); procedure MultiplizierenClick(Sender: TObject); procedure DividierenClick(Sender: TObject); procedure GleichClick(Sender: TObject); procedure CClick(Sender: TObject); private { Private-Deklarationen} function TextZuZahl(Text: String): real; // Deklaration nur mit den Kopf Der Funktion public { Public-Deklarationen } end; var Form1: TForm1; LetzteZahl: Integer; Zwischensumme: real; Rechnung: String; implementation {$R *.dfm} function TForm1.TextZuZahl(Text: String): real; begin result := StrToFloat(Text); end; function TForm1.MehrZahlenAlsZwei(Zwischensumme: real; LetzteZahl: Integer): real; begin result := Zwischensumme + LetzteZahl; end; procedure TForm1.Zahl1Click(Sender: TObject); begin Edit1.Text := Edit1.Text + (Sender as TButton).Caption; Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption; end; procedure TForm1.AusClick(Sender: TObject); begin Close; end; procedure TForm1.AddierenClick(Sender: TObject); // Pluszeichen-Button ( + ) begin Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption; Rechnung := '+'; GleichClick(nil); LetzteZahl := StrToInt(Edit1.Text); Edit1.Text := ''; end; procedure TForm1.SubtrahierenClick(Sender: TObject); // Minuszeichen-Button ( - ) begin Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption; Rechnung := '-'; GleichClick(nil); LetzteZahl := StrToInt(Edit1.Text); Edit1.Text := ''; end; procedure TForm1.MultiplizierenClick(Sender: TObject); // Malzeichen-Button ( * ) begin Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption; Rechnung := '*'; GleichClick(nil); LetzteZahl := StrToInt(Edit1.Text); Edit1.Text := ''; end; procedure TForm1.DividierenClick(Sender: TObject); // Geteiltzeichen-Button ( / ) begin Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption; Rechnung := '/'; GleichClick(nil); LetzteZahl := StrToInt(Edit1.Text); Edit1.Text := ''; end; procedure TForm1.GleichClick(Sender: TObject); // Gleichzeichen-Button ( = ) begin // Addieren if (Rechnung = '+') then begin Zwischensumme := Zwischensumme + TextZuZahl(Edit1.Text); Label1.Caption := FloatToStr(Zwischensumme); end; // Subtrahieren if (Rechnung = '-') then begin Zwischensumme := LetzteZahl + Zwischensumme - TextZuZahl(Edit1.Text); Label1.Caption := FloatToStr(Zwischensumme); end; // Multiplizieren if (Rechnung = '*') then begin if (Zwischensumme > 0) then begin Zwischensumme := Zwischensumme * TextZuZahl(Edit1.Text); end else begin Zwischensumme := LetzteZahl * TextZuZahl(Edit1.Text); end; Label1.Caption := FloatToStr(Zwischensumme); end; // Dividieren if (Rechnung = '/') then begin if (Zwischensumme > 0) then begin Zwischensumme := Zwischensumme / TextZuZahl(Edit1.Text); end else begin Zwischensumme:= LetzteZahl / TextZuZahl(Edit1.Text); end; Label1.Caption := FloatToStr(Zwischensumme); end; end; procedure TForm1.CClick(Sender: TObject); begin Rechenweg.Caption := ''; Edit1.Text := ''; Label1.Caption := ''; Zwischensumme := 0; LetzteZahl := 0; end; end. |
AW: Taschenrechner (Anfänger) Problem mit Minuszahlen
|
AW: Taschenrechner (Anfänger) Problem mit Minuszahlen
Das habe ich ja aber soweit ich meine Programmierung verstehe wird die zahl im Edit1.Text gespeichert und dann erst in die var Zwischensumme deswegen kann ich keine Minuszahlen Richtig rechnen aber ich kriege es nicht mehr behoben:(
|
AW: Taschenrechner (Anfänger) Problem mit Minuszahlen
Bitte überarbeite deinen Beitrag nochmal und rahme den gesamten SourceCode in
Code:
Tags ein damit man das ansatzweise lesen kann. Achte auch bitte auf Einrückungen in deinem SourceCode. Die sind jetzt natürlich verloren gegangen.
[DELPHI][/DELPHI]
EDIT: Du kannst auch den SourceCode komplett markieren und dann den Delphi Helm über dem (erweiterten) Beitragseditor klicken. |
AW: Taschenrechner (Anfänger) Problem mit Minuszahlen
Leider rechnet Dein Taschenrechner aber falsch...
1+2*3 = 7 und nicht 9 Am einfachsten kann man das umsetzen, in dem man einen Stack benutzt! - intern - die Umgekehrte polnische Notation verwenden. // Edit |
AW: Taschenrechner (Anfänger) Problem mit Minuszahlen
Ok danke schön
|
AW: Taschenrechner (Anfänger) Problem mit Minuszahlen
Zitat:
Zitat:
|
AW: Taschenrechner (Anfänger) Problem mit Minuszahlen
Nicht so wirklich aber ich gucke im delphi treff nach der bedeutung von stack - intern - die Umgekehrte polnische Notation verwendet.
:) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz