AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Taschenrechner (Anfänger) Problem mit Minuszahlen

Taschenrechner (Anfänger) Problem mit Minuszahlen

Ein Thema von Prakti16 · begonnen am 30. Sep 2016 · letzter Beitrag vom 30. Sep 2016
Antwort Antwort
Seite 1 von 2  1 2   
Prakti16

Registriert seit: 26. Sep 2016
23 Beiträge
 
#1

Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 11:02
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.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 11:40
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.
Hallo Prakti,

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:
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;
Du wirst sehen, dass die Zahl -18 vom Label angezeigt wird. Eigentlich kein Hexenwerk.

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;
  Mit Zitat antworten Zitat
Prakti16

Registriert seit: 26. Sep 2016
23 Beiträge
 
#3

AW: Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 11:49
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.

Geändert von Prakti16 (30. Sep 2016 um 11:58 Uhr)
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#4

AW: Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 11:53
http://www.delphipraxis.net/190355-e...ml#post1348903
  Mit Zitat antworten Zitat
Prakti16

Registriert seit: 26. Sep 2016
23 Beiträge
 
#5

AW: Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 11:55
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
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 11:56
Bitte überarbeite deinen Beitrag nochmal und rahme den gesamten SourceCode in
Code:
[DELPHI][/DELPHI]
Tags ein damit man das ansatzweise lesen kann. Achte auch bitte auf Einrückungen in deinem SourceCode. Die sind jetzt natürlich verloren gegangen.

EDIT: Du kannst auch den SourceCode komplett markieren und dann den Delphi Helm über dem (erweiterten) Beitragseditor klicken.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 12:16
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

Geändert von Mavarik (30. Sep 2016 um 12:39 Uhr)
  Mit Zitat antworten Zitat
Prakti16

Registriert seit: 26. Sep 2016
23 Beiträge
 
#8

AW: Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 12:22
Ok danke schön
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#9

AW: Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 12:34
Am einfachsten kann man das umsetzen, in dem man einen Stack benutzt - intern - die Umgekehrte polnische Notation verwendet.
Ok danke schön
Weißt du denn, was er meint? Ich nämlich nicht
  Mit Zitat antworten Zitat
Prakti16

Registriert seit: 26. Sep 2016
23 Beiträge
 
#10

AW: Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 12:49
Nicht so wirklich aber ich gucke im delphi treff nach der bedeutung von stack - intern - die Umgekehrte polnische Notation verwendet.
  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 11:15 Uhr.
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