#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. + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren