Taschenrechner nur '+' kein '-'

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
daredevil321
Beiträge: 5
Registriert: Sa 28. Nov 2009, 18:51

Taschenrechner nur '+' kein '-'

Beitrag von daredevil321 »

Hallo habe folgendes geschrieben

Code: Alles auswählen

unit Test1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Edit1: TEdit;
 
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
 
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  zwerg: Integer;
  zwerg2: Integer;
implementation
 
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'1';
end;
 
procedure TForm1.Button10Click(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'8';
end;
 
procedure TForm1.Button11Click(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'9';
end;
 
procedure TForm1.Button12Click(Sender: TObject);
begin
  zwerg2:=StrToInt(edit1.text);
  edit1.Text:='';
end;
 
procedure TForm1.Button13Click(Sender: TObject);
begin
  edit1.Text:=IntToStr(zwerg2-StrToInt(edit1.text))
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  zwerg:=StrToInt(edit1.text);
  edit1.Text:='';
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  edit1.Text:=IntToStr(zwerg+StrToInt(edit1.text));
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'2';
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'3';
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'4';
end;
 
procedure TForm1.Button7Click(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'5';
end;
 
procedure TForm1.Button8Click(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'6';
end;
 
procedure TForm1.Button9Click(Sender: TObject);
begin
  edit1.Text:=edit1.Text+'7';
end;
 
initialization
  {$I test1.lrs}
 
end.


ich musste 2 Gleich-Button machen weil ich einmal mit Minus und einmal mit Plus rechne. Ich habe schon von der IF...then...else Formel gehört aber ich kann sie net anwenden wäre nett wenn mir einer helfen kann .
Zuletzt geändert von monta am So 29. Nov 2009, 12:33, insgesamt 1-mal geändert.
Grund: Bitte Codetags verwenden.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Taschenrechner nur '+' kein '-'

Beitrag von theo »

daredevil321 hat geschrieben:ich musste 2 Gleich-Button machen weil ich einmal mit Minus und einmal mit Plus rechne. Ich habe schon von der IF...then...else Formel gehört aber ich kann sie net anwenden wäre nett wenn mir einer helfen kann .


An deiner Stelle würde ich mal ein paar Pascal Grundlagen lernen. Das kann man nicht alles im Forum erfragen.
Danach kannst du dir mal den kleinen Calc im Anhang anschauen. Habe ich eben von Delphi nach Lazarus portiert (Original von hier: http://www.programmersheaven.com/downlo ... nload.aspx )
Dateianhänge
calc.zip
(100.61 KiB) 99-mal heruntergeladen

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Taschenrechner nur '+' kein '-'

Beitrag von pluto »

Ich würde es so machen:
nutze bei jedem Button, der eine Zahl ist die Tag Eigenschaft.
Verbinde alle onClick Events mit einer Procedure. Dort kannst du dann z.b. folgendes rein schreiben:
wert:=(sender as TButton).Tag;
wert muss natürlich ein Integer sein. Das ist das einfachste. Für die Operatoren wie Plus, Minus könntest du das gleiche machen, und dann eine allgemeine Funktion schreiben, die das Ergebnis Zurück gibt.
Die Buttons dazu müssten natürlich ein zweite Procedure nutzen.

Ich hoffe du kannst damit etwas Anfangen.
MFG
Michael Springwald

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Taschenrechner nur '+' kein '-'

Beitrag von shokwave »

Hier erfährst du wie man die drei Muscheln benutzt. ;)
mfg Ingo

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: Taschenrechner nur '+' kein '-'

Beitrag von felix96 »

Code: Alles auswählen

if bla = bla2 then
Begin
//anweisungen
end
else
begin
//anweisungen
end;

oder

Code: Alles auswählen

if bla = bla2 then {Anweisungen}


= gleich
hier ist kleiner als < hier
hier ist größer als > hier
hier ist größer, oder gleich => hier
hier ist kleiner, oder gleich =< hier
not , nicht

Beispiel

Code: Alles auswählen

if i = b then b := 2;
if i > b then b := 3;
if i =< b then
begin
b := 20
showmessage('Dies ist eine kleine Nachricht!');
end  // wenn jetzt else kommt muss das semikolon weg
else showmessage('Ich hoffe ich konte dir helfen :-)');
end;// hier muss´es wieder hin
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Taschenrechner nur '+' kein '-'

Beitrag von Socke »

Wenn wir schon bei den Grundlagen sind, bitte auch richtig:
felix96 hat geschrieben:

Code: Alles auswählen

{...}
begin
b := 20
showmessage('Dies ist eine kleine Nachricht!');
end  // wenn jetzt else kommt muss das semikolon weg
else showmessage('Ich hoffe ich konte dir helfen :-)');
end;// hier muss´es wieder hin

so ist's richtig:

Code: Alles auswählen

begin
b := 20;
showMessage('Dies ist ein kleine Nachricht!')// hier ist das Semikolon optional, da end folgt
end // hier darf kein Semikolon stehen, da else folgt
else showmessage('Ich hoffe ich konte dir helfen :-)'); // Rechtschreibfehler von oben ist optional; Wenn das hier so ohne begin nach dem else steht, darf auch kein end, muss aber Semikolon
// oder alternativ mit begin und end (end dann mit Semikolon) und optionalem Semikolon hinter showmessage()
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten