Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Taschenrechner (https://www.delphipraxis.net/106993-taschenrechner.html)

Klaus01 20. Jan 2008 15:09

Re: Taschenrechner
 
Die Delphi Hilfe aufrufen, pi eingeben.

Grüße
Klaus

Enten Mann 20. Jan 2008 15:14

Re: Taschenrechner
 
OK Danke ist die Hilfe Datei auch bei Turbo Delphi dabei weil ich find da in der Hilfedatei nix zu PI, und irgendwie funtz bei mir nur die 0 was is falsch lerne grade delphi

Delphi-Quellcode:
unit Unit1; {Name der Unit}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Image0: TImage;
    Image1: TImage;
    Image2: TImage;
    Image8: TImage;
    Image5: TImage;
    Image3: TImage;
    Image7: TImage;
    Image6: TImage;
    Image4: TImage;
    Image9: TImage;
    Mal: TImage;
    Back: TImage;
    Geteilt: TImage;
    Gleich: TImage;
    Plus: TImage;
    Punkt: TImage;
    Rechts: TImage;
    Links: TImage;
    Minus: TImage;
    Edit1: TEdit;
    PI: TImage;

    { Procedure Starts }
    procedure Button1Click(Sender: TObject);
    procedure Image0Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure Image4Click(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure Image6Click(Sender: TObject);
    procedure Image7Click(Sender: TObject);
    procedure Image8Click(Sender: TObject);
    procedure Image9Click(Sender: TObject);
    procedure ImageLinksClick(Sender: TObject);
    procedure ImageRechtsClick(Sender: TObject);
    procedure ImagePlusClick(Sender: TObject);
    procedure ImageMinusClick(Sender: TObject);
    procedure ImagePunktClick(Sender: TObject);
    procedure ImageMalClick(Sender: TObject);
    procedure ImageGleichClick(Sender: TObject);
    procedure ImageGeteiltClick(Sender: TObject);
    procedure ImagePIClick(Sender: TObject);
  { Procedure Ends }
    private
      { Private-Deklarationen }
    public
      { Public-Deklarationen }
  end;

var
  Form1: TForm1; //Hier werden die Globalen Variablen definiert

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject); //Unser OnClick-Ereignis
var
  zahl1, zahl2, ergebnis: integer; //Unsere Variablen
begin
  Edit1.Text:=IntToStr(2*StrToInt(Edit1.Text))
end;

{ Zahlen Buttons }
procedure TForm1.Image0Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '0'; // edInput ist das Edit
end;


procedure TForm1.Image1Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '1'; // edInput ist das Edit
end;

procedure TForm1.Image2Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '2'; // edInput ist das Edit
end;

procedure TForm1.Image3Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '3'; // edInput ist das Edit
end;

procedure TForm1.Image4Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '4'; // edInput ist das Edit
end;

procedure TForm1.Image5Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '5'; // edInput ist das Edit
end;

procedure TForm1.Image6Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '6'; // edInput ist das Edit
end;

procedure TForm1.Image7Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '7'; // edInput ist das Edit
end;

procedure TForm1.Image8Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '8'; // edInput ist das Edit
end;

procedure TForm1.Image9Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '9'; // edInput ist das Edit
end;
{ Zahlen Buttons }




{ Symbole }
procedure TForm1.ImageLinksClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '('; // edInput ist das Edit
end;

procedure TForm1.ImageRechtsClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + ')'; // edInput ist das Edit
end;

procedure TForm1.ImagePlusClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '+'; // edInput ist das Edit
end;

procedure TForm1.ImageMinusClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '-'; // edInput ist das Edit
end;

procedure TForm1.ImageMalClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '*'; // edInput ist das Edit
end;

procedure TForm1.ImageGeteiltClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '/'; // edInput ist das Edit
end;

procedure TForm1.ImagePunktClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + ','; // edInput ist das Edit
end;

procedure TForm1.ImageGleichClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '='; // edInput ist das Edit
end;

procedure TForm1.ImagePIClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '8'; // edInput ist das Edit
end;
{ Symbole }

end.

dominikkv 20. Jan 2008 15:21

Re: Taschenrechner
 
hast du bei jedem Image das onClick mit der entsprechenden Prozedur verknüpft?

Enten Mann 20. Jan 2008 15:32

Re: Taschenrechner
 
Ja habe ich sieht man ja auch im Code ich sehe keine Fehler.

das Meine Procedures

Delphi-Quellcode:
    { Procedure Starts }
    procedure Button1Click(Sender: TObject);
    procedure Image0Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure Image4Click(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure Image6Click(Sender: TObject);
    procedure Image7Click(Sender: TObject);
    procedure Image8Click(Sender: TObject);
    procedure Image9Click(Sender: TObject);
    procedure ImageLinksClick(Sender: TObject);
    procedure ImageRechtsClick(Sender: TObject);
    procedure ImagePlusClick(Sender: TObject);
    procedure ImageMinusClick(Sender: TObject);
    procedure ImagePunktClick(Sender: TObject);
    procedure ImageMalClick(Sender: TObject);
    procedure ImageGleichClick(Sender: TObject);
    procedure ImageGeteiltClick(Sender: TObject);
    procedure ImagePIClick(Sender: TObject);
  { Procedure Ends }
Das die Images

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    Image10: TImage;
    Image11: TImage;
    Image14: TImage;
    Image15: TImage;
    Image16: TImage;
    Image17: TImage;
    Image18: TImage;
    Image19: TImage;
    Image20: TImage;
    Image21: TImage;
    Image22: TImage;
    Edit1: TEdit;
    Image12: TImage;

PaddyL 20. Jan 2008 15:34

Re: Taschenrechner
 
Ich würde dir RPN als Standard empfehlen bzw. RPN las Backend nutzen, da gibt es Algorythmen für um es umzurechnen, dann ist es um einiges Leichter den Taschenrechner zu programmieren. Hier ein Beispielcode (Lazarus/Free Pascal) den ich für einen RPN-Rechner auf meinem PocketPC verwendet habe:

Delphi-Quellcode:
unit MainForm;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Math,
  StdCtrls, ComCtrls, Menus;

type

  { TMainForm }

  TMainForm = class(TForm)
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    Stack: TListBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button0: TButton;
    ButtonPoint: TButton;
    ButtonEnter: TButton;
    ButtonAdd: TButton;
    ButtonSub: TButton;
    ButtonMul: TButton;
    ButtonDiv: TButton;
    edtCalc: TEdit;
    ButtonPower: TButton;
    ButtonPosNeg: TButton;
    ButtonRoot: TButton;
    ButtonLog: TButton;
    ButtonRound: TButton;
    ButtonPi: TButton;
    ButtonFak: TButton;
    Button1_2: TButton;
    Button10: TButton;
    Button11: TButton;
    ButtonProm: TButton;
    ButtonProz: TButton;
    procedure Button0Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button1_2Click(Sender: TObject);
    procedure ButtonPowerClick(Sender: TObject);
    procedure ButtonAddClick(Sender: TObject);
    procedure ButtonDivClick(Sender: TObject);
    procedure ButtonEnterClick(Sender: TObject);
    procedure ButtonFakClick(Sender: TObject);
    procedure ButtonLogClick(Sender: TObject);
    procedure ButtonMulClick(Sender: TObject);
    procedure ButtonPiClick(Sender: TObject);
    procedure ButtonPointClick(Sender: TObject);
    procedure ButtonPosNegClick(Sender: TObject);
    procedure ButtonPromClick(Sender: TObject);
    procedure ButtonProzClick(Sender: TObject);
    procedure ButtonRootClick(Sender: TObject);
    procedure ButtonRoundClick(Sender: TObject);
    procedure ButtonSubClick(Sender: TObject);
    procedure edtCalcClick(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject);
    procedure StackDblClick(Sender: TObject);
  private
    { private declarations }
    function Pop: Real;
    procedure Push(R: Real);
  public
    { public declarations }
  end;

var
  frmMainForm: TMainForm;

implementation

function TMainForm.Pop: Real;
begin
  Result := StrToFloat(Stack.Items[Stack.Items.Count - 1]);
  Stack.Items.Delete(Stack.Items.Count - 1);
end;

procedure TMainForm.Push(R: Real);
begin
  Stack.Items.Add(FloatToStr(R));
end;

procedure TMainForm.Button0Click(Sender: TObject);
begin
  edtCalc.Text := edtCalc.Text + (Sender as TButton).Caption;
end;

procedure TMainForm.Button10Click(Sender: TObject);
begin
  Push(1/4);
end;

procedure TMainForm.Button11Click(Sender: TObject);
begin
  Push(3/4);
end;

procedure TMainForm.Button1_2Click(Sender: TObject);
begin
  Push(1/2);
end;

procedure TMainForm.ButtonPowerClick(Sender: TObject);
var
  Num1, Num2: Real;
begin
  if Stack.Items.Count > 1 then
  begin
    Num1 := Pop;
    Num2 := Pop;
    Push(Power(Num2, Num1));
  end;
end;

procedure TMainForm.ButtonAddClick(Sender: TObject);
var
  Num1, Num2: Real;
begin
  if Stack.Items.Count > 1 then
  begin
    Num1 := Pop;
    Num2 := Pop;
    Push(Num2 + Num1);
  end;
end;

procedure TMainForm.ButtonDivClick(Sender: TObject);
var
  Num1, Num2: Real;
begin
  if Stack.Items.Count > 1 then
  begin
    Num1 := Pop;
    Num2 := Pop;
    Push(Num2 / Num1);
  end;
end;

procedure TMainForm.ButtonEnterClick(Sender: TObject);
begin
  if edtCalc.Text <> '' then
  begin
    Stack.Items.Add(edtCalc.Text);
    edtCalc.Text := '';
  end;
end;

procedure TMainForm.ButtonFakClick(Sender: TObject);
var
  Num: Real;
  I, J: Integer;
begin
  if Stack.Items.Count > 0 then
  begin
    Num := Pop;
    J := 1;
    for I := 1 to Round(Num) do
      J := J * I;
    Push(Round(J));
  end;
end;

procedure TMainForm.ButtonLogClick(Sender: TObject);
var
  Num: Real;
begin
  if Stack.Items.Count > 0 then
  begin
    Num := Pop;
    Push(Log10(Num));
  end;
end;

procedure TMainForm.ButtonMulClick(Sender: TObject);
var
  Num1, Num2: Real;
begin
  if Stack.Items.Count > 1 then
  begin
    Num1 := Pop;
    Num2 := Pop;
    Push(Num2 * Num1);
  end;
end;

procedure TMainForm.ButtonPiClick(Sender: TObject);
begin
  Stack.Items.Add(FloatToStr(PI));
end;

procedure TMainForm.ButtonPointClick(Sender: TObject);
begin
  if Pos('.', edtCalc.Text) = 0 then
    edtCalc.Text := edtCalc.Text + '.';
end;

procedure TMainForm.ButtonPosNegClick(Sender: TObject);
var
  Num: Real;
begin
  if Stack.Items.Count > 0 then
  begin
    Num := Pop;
    Push(Num * -1);
  end;
end;

procedure TMainForm.ButtonPromClick(Sender: TObject);
var
  Num: Real;
begin
  if Stack.Items.Count > 0 then
  begin
    Num := Pop;
    Push(Num / 1000);
  end;
end;

procedure TMainForm.ButtonProzClick(Sender: TObject);
var
  Num: Real;
begin
  if Stack.Items.Count > 0 then
  begin
    Num := Pop;
    Push(Num / 100);
  end;
end;

procedure TMainForm.ButtonRootClick(Sender: TObject);
var
  Num1, Num2: Real;
begin
  if Stack.Items.Count > 1 then
  begin
    Num1 := Pop;
    Num2 := Pop;
    Push(Power(Num2, (1 / Num1)));
  end;
end;

procedure TMainForm.ButtonRoundClick(Sender: TObject);
var
  Num: Real;
begin
  if Stack.Items.Count > 0 then
  begin
    Num := Pop;
    Push(Round(Num));
  end;
end;

procedure TMainForm.ButtonSubClick(Sender: TObject);
var
  Num1, Num2: Real;
begin
  if Stack.Items.Count > 1 then
  begin
    Num1 := Pop;
    Num2 := Pop;
    Push(Num2 - Num1);
  end;
end;

procedure TMainForm.edtCalcClick(Sender: TObject);
begin
  edtCalc.Text := Copy(edtCalc.Text, 1, Length(edtCalc.Text) - 1);
end;

procedure TMainForm.MenuItem1Click(Sender: TObject);
begin
  ShowMessage('(C) 2007 by Paddy Lerner [PaddyLerner@gmail.com]');
end;

procedure TMainForm.StackDblClick(Sender: TObject);
begin
  if not Stack.ItemIndex = -1 then
    Stack.Items.Delete(Stack.ItemIndex);
end;

initialization
  {$I MainForm.lrs}

end.

Enten Mann 20. Jan 2008 15:36

Re: Taschenrechner
 
Ich muss ja nur was ganz kleines ändern nur was alles stimmt soweit ich sehe

Enten Mann 20. Jan 2008 15:43

Re: Taschenrechner
 
Ich muss ja nur was kleines, nur was?

Ich sehe kein Fehler im Code

Larsi 20. Jan 2008 15:47

Re: Taschenrechner
 
das was du machst heißt pushen und ist erst nach 24h erlaubt (glaub mir ich hatte damit oft erfahrung :) )

Enten Mann 20. Jan 2008 15:52

Re: Taschenrechner
 
tut mir leid hatte gedacht wäre nicht drin hatte net gesehen das eine 2te seite gekommen ist

rawsoul 20. Jan 2008 16:05

Re: Taschenrechner
 
Ich glaube auch ein Push ist nach 7 Minuten eher unwahrscheinlich ;)

Enten Mann, versuch's doch mal mit etwas Eigeninitiative, sonst lernt man nie dazu... Ist nicht böse gemeint!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 Uhr.
Seite 2 von 6     12 34     Letzte »    

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