[Code] Help!!! TR mit Knopfeingabe in Delphi

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Jaco, 16. Januar 2010 .

Schlagworte:
  1. 16. Januar 2010
    Help!!! TR mit Knopfeingabe in Delphi

    Ich denke, dass es nichts neues für einen erfahrenen Programmierer ist:

    Ich möchte in Delphi 5 einen Taschenrechner erstellen, bei dem man die Zahlen und Befehle per Knopfeingabe ausführt (ja es muss so sein).

    Bis jetzt siehts es folgendermaßen aus:

    {bild down}


    Und der Code dazu:

    Code:
    unit Unit1;
    
    interface
    
    uses
     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
     StdCtrls;
    
    type
     TRechner = class(TForm)
     Anzeige1: TLabel;
     Anzeige2: TLabel;
     Ausgabe1: TLabel;
     Minus: TButton;
     mal: TButton;
     Geteilt: TButton;
     acht: TButton;
     sieben: TButton;
     sechs: TButton;
     fuenf: TButton;
     vier: TButton;
     drei: TButton;
     zwei: TButton;
     eins: TButton;
     Istgleich: TButton;
     null: TButton;
     Delete: TButton;
     neun: TButton;
     plus: TButton;
     Label1: TLabel;
     procedure FormCreate(Sender: TObject);
     procedure einsClick(Sender: TObject);
     procedure nullClick(Sender: TObject);
     procedure zweiClick(Sender: TObject);
     procedure dreiClick(Sender: TObject);
     procedure vierClick(Sender: TObject);
     procedure fuenfClick(Sender: TObject);
     procedure sechsClick(Sender: TObject);
     procedure siebenClick(Sender: TObject);
     procedure achtClick(Sender: TObject);
     procedure neunClick(Sender: TObject);
     procedure MinusClick(Sender: TObject);
     procedure plusClick(Sender: TObject);
     procedure malClick(Sender: TObject);
     procedure GeteiltClick(sender:TObject);
     procedure DeleteClick(Sender: TObject);
     private
     { Private-Deklarationen }
     public
     { Public-Deklarationen }
     end;
    
    var
     Rechner: TRechner;
     Eingabe1:integer;
     Eingabe2:integer;
     Roclick:boolean;
    implementation
    
    {$R *.DFM}
    
    procedure TRechner.FormCreate(Sender: TObject);
    begin
     Roclick:=false;
    
    end;
     //EINS
    procedure TRechner.einsClick(Sender: TObject);
    begin
     if
     Roclick
     then
     Anzeige2.Caption:=Anzeige2.Caption+IntToStr(1)
     else
     Anzeige1.Caption:=Anzeige1.Caption+IntToStr(1) 
    
    end;
     //NULL
    procedure TRechner.nullClick(Sender: TObject);
    begin
    if
     Roclick
     then
     Anzeige2.Caption:=Anzeige2.Caption+IntToStr(0)
     else
     Anzeige1.Caption:=Anzeige1.Caption+IntToStr(0)
    end;
    
     //ZWEI
    procedure TRechner.zweiClick(Sender: TObject);
    begin
    if
     Roclick
     then
     Anzeige2.Caption:=Anzeige2.Caption+IntToStr(2)
     else
     Anzeige1.Caption:=Anzeige1.Caption+IntToStr(2)
    end;
     //DREI
    procedure TRechner.dreiClick(Sender: TObject);
    begin
    if
     Roclick
     then
     Anzeige2.Caption:=Anzeige2.Caption+IntToStr(3)
     else
     Anzeige1.Caption:=Anzeige1.Caption+IntToStr(3)
    end;
     //VIER
    procedure TRechner.vierClick(Sender: TObject);
    begin
    if
     Roclick
     then
     Anzeige2.Caption:=Anzeige2.Caption+IntToStr(4)
     else
     Anzeige1.Caption:=Anzeige1.Caption+IntToStr(4)
    end;
     //FÜNF
    procedure TRechner.fuenfClick(Sender: TObject);
    begin
    if
     Roclick
     then
     Anzeige2.Caption:=Anzeige2.Caption+IntToStr(5)
     else
     Anzeige1.Caption:=Anzeige1.Caption+IntToStr(5)
    end;
     //SECHS
    procedure TRechner.sechsClick(Sender: TObject);
    begin
    if
     Roclick
     then
     Anzeige2.Caption:=Anzeige2.Caption+IntToStr(6)
     else
     Anzeige1.Caption:=Anzeige1.Caption+IntToStr(6)
    end;
     //SIEBEN
    procedure TRechner.siebenClick(Sender: TObject);
    begin
    if
     Roclick
     then
     Anzeige2.Caption:=Anzeige2.Caption+IntToStr(7)
     else
     Anzeige1.Caption:=Anzeige1.Caption+IntToStr(7)
    end;
     //ACHT
    procedure TRechner.achtClick(Sender: TObject);
    begin
    if
     Roclick
     then
     Anzeige2.Caption:=Anzeige2.Caption+IntToStr(8)
     else
     Anzeige1.Caption:=Anzeige1.Caption+IntToStr(8)
    end;
     //NEUN
    procedure TRechner.neunClick(Sender: TObject);
    begin
    if
     Roclick
     then
     Anzeige2.Caption:=Anzeige2.Caption+IntToStr(9)
     else
     Anzeige1.Caption:=Anzeige1.Caption+IntToStr(9)
    end;
    
    
    
     //Subtraktion
    procedure TRechner.MinusClick(Sender: TObject);
    begin
     Roclick:=true;
    end;
     //Addition
    procedure TRechner.plusClick(Sender: TObject);
    begin
    roclick:=true;
    end;
     //Multiplikation
    procedure TRechner.malClick(Sender: TObject);
    begin
    roclick:=true;
    end;
     //Division
    procedure TRechner.GeteiltClick(Sender: TObject);
     begin
     roclick:=true;
     end;
    
     //Löschen
    procedure TRechner.DeleteClick(Sender: TObject);
    begin
     Anzeige1.Caption:= '';
     Anzeige2.Caption:= '';
     Ausgabe1.Caption:= '';
     Roclick:= false;
    
    end;
     //Ist gleich... (=)
    end.
    

    Ganz kurz zu der Funktion:
    1. Man gibt Zahlen per Knopf ein, die nacheinender im ersten Feld erscheinen
    2. Dann wählt man ein Rechenzeichen aus und gibt dann Zahlen im zweiten Feld ein
    3. ???
    Nun möchte ich, dass wenn ich auf = Drücke, dass er die Rechenoperation durchführt, die ich gewählt habe.

    Wie soll ich das machen, außerdem habe ich die Rechenoperationen hinter den Rechenzeichen noch garnicht eingetragen... Wie kann ich machen, dass wenn ich = drücke, er rausliest, welche rechenoperation ich gewählt habe ich dann eben diese mit der Anzeige1 und Anzeige2 auführt???

    Ich bin noch ein Anfänger im Programmieren, würde mich aber sehr auf euere Hilfe freuen.
     
  2. 16. Januar 2010
    AW: Help!!! TR mit Knopfeingabe in Delphi

    du hast ja schon prozeduren wenn auf die buttons mit +- * / gedrückt wird

    jetzt solltest du dir zusätzlich zu dem das gedrückt worden ist in einer variable speichern welcher knopf gedrückt wird.

    Das kannst du mit Hilfe eines Integer machen zB.:

    0 --> +
    1 --> -
    2 --> *
    3 --> /

    Je nachdem was da dann drinsteht führst du die Operation aus.

    Eleganter wäre eine Lösung mit Delegaten.

    Sollte so für dich am einfachsten sein.
     
  3. 16. Januar 2010
    AW: Help!!! TR mit Knopfeingabe in Delphi

    danke für deine antwort

    wie ich verstanden habe soll ich jedem rechenbefehl einen integer zuweisen,
    und dieser wird dann gespeichert?

    und wenn man dann auf = drückt, soll er die gespeicherte variable ausführen

    so nun das problem: ich hab es ungefähr verstanden, doch ich habe keinen schimmer, wie ich das umsetzen soll, so viel erfahrung habe ich leider nicht

    könntest du mir vielleicht zeigen, wie das bei einer operation aussieht? also der syntax und so?
     
  4. 17. Januar 2010
    AW: Help!!! TR mit Knopfeingabe in Delphi

    ich kann leider kein Delphi. Deswegen kann ich dir einen genaueren Hinweis nicht geben.

    Falls es dir hilft in Java oder C# ein Beispiel zu sehen könnte ich dir da etwas basteln.

    Vll kann auch jmd anderes helfen.
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.