![]() |
Taschenrechner
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich soll ein Taschenrechner programmieren habe auch damit angefangen. Ich habe aber einige Probleme. Ich habe nur Ein Textfeld und von da aus muss ich alles ausrechnen aber hab keine Ahnung wie das geht, kann mir jemand dabei helfen.. Mein bisheiger Quelltext
Delphi-Quellcode:
unit Calculator_Main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TFormCalculator_Main = class(TForm) BitBtn1: TBitBtn; EditCalc: TEdit; BitBtn2: TBitBtn; BitBtn3: TBitBtn; BitBtn4: TBitBtn; BitBtn5: TBitBtn; BitBtn6: TBitBtn; BitBtn7: TBitBtn; BitBtn8: TBitBtn; BitBtn9: TBitBtn; BitBtn0: TBitBtn; BitBtnDecimalSep: TBitBtn; BitBtnResult: TBitBtn; BitBtnPlus: TBitBtn; BitBtnMinus: TBitBtn; BitBtnDiv: TBitBtn; BitBtnMult: TBitBtn; BitBtnParantheseLeft: TBitBtn; BitBtnParantheseRight: TBitBtn; procedure BitBtnClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var FormCalculator_Main: TFormCalculator_Main; implementation {$R *.dfm} procedure TFormCalculator_Main.BitBtnClick(Sender: TObject); begin EditCalc.Text := EditCalc.Text + TBitBtn(Sender).Caption; end; end. |
Re: Taschenrechner
Hi
Wie wär es mal mit ein wenig Eigeniniative ? Taschenrechner.... Suchen und... anfangen, sich damit zu beschäftigen. Hier ist sicherlich nicht das Forum, das Hausaufgaben macht ! Gruß oldmax |
Re: Taschenrechner
Eigeninitiative habe ich schon.. Ich habe auch ein Taschenrechner programmiert, aber ich hatte da zwei Textfelder und jetzt habe ich nur ein Textfeld und da ist das Problem. Ich weiß nicht wo ich die berechnungen schreiben soll.
|
Re: Taschenrechner
Du brauchst einfach nur Zwischenvariablen, in denen Du die Werte abspeicherst.
|
Re: Taschenrechner
Wie mache ich denn die Zwischenspeicherung?
|
Re: Taschenrechner
Delphi-Quellcode:
So in etwa, wobei ich hier keine Fehlerbehandlung implementiert habe, aber das sollte ja auch nur ein Beispiel zur Veranschaulichung sein.
type
TFormCalculator_Main = class(TForm) ... private FZahl: double; //Puffervariable ... end; ... procedure TFormCalculator_Main.BitBtnClick(Sender: TObject); begin //FZahl berechnen FZahl := FZahl + StrToFloat(TBitBtn(Sender).Caption); //und ausgeben EditCalc.Text := FloatToStr(FZahl); end; |
Re: Taschenrechner
ok, wird dann die ganze berechnung in diesem procedure gemacht..?
Delphi-Quellcode:
procedure TFormCalculator_Main.BitBtnClick(Sender: TObject);
|
Re: Taschenrechner
Wie/wo machst du es bisher?
|
Re: Taschenrechner
:firejump:
Hallo Safak67, schau Dir mal den Code an. Das könnte sehr wohl funktionieren. Gruß Egon
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton; Label1: TLabel; Button17: TButton; Button18: TButton; procedure Button18Click(Sender: TObject); procedure Button17Click(Sender: TObject); procedure ZeiButtonClick(Sender: TObject); procedure OpButtonClick(Sender: TObject); procedure IstButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button19Click(Sender: TObject); procedure Hilfe2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} var strBuff1, strBuff2: string; // Operanden- u. Ergebnisspeicher op: Char; // Operation (+,-,*,/) mode: Byte = 1; // 1 = ersten Operand eingeben // 2 = zweiten Operand eingeben procedure TForm1.Button17Click(Sender: TObject); // Anzeige löschen begin if mode = 1 then StrBuff1 := '' else StrBuff2 := ''; Label1.Caption := '' end; procedure TForm1.ZeiButtonClick(Sender: TObject); // Zahleneingabe var zei: Char; // eingegebenes Zeichen begin if Sender = Button10 then zei := '0'; if Sender = Button1 then zei := '1'; if Sender = Button2 then zei := '2'; if Sender = Button3 then zei := '3'; if Sender = Button4 then zei := '4'; if Sender = Button5 then zei := '5'; if Sender = Button6 then zei := '6'; if Sender = Button7 then zei := '7'; if Sender = Button8 then zei := '8'; if Sender = Button9 then zei := '9'; if Sender = Button11 then zei := '.'; if mode = 1 then begin strBuff1 := strBuff1 + zei; Label1.Caption := strBuff1 end else begin strBuff2 := strBuff2 + zei; Label1.Caption := strBuff2 end end; procedure TForm1.OpButtonClick(Sender: TObject); // Operation auswählen begin if mode = 1 then begin if Sender = Button14 then op:= '+'; if Sender = Button15 then op:= '-'; if Sender = Button12 then op:= '*'; if Sender = Button13 then op:= '/'; StrBuff2:=''; mode := 2 end end; procedure TForm1.IstButtonClick(Sender: TObject); // Ergebnis berechnen var res, op1, op2: Double; code: Integer; s: string; begin if mode = 2 then begin Val(strBuff1, op1, code); // StringBuffer1 in Zahl verwandeln Val(strBuff2, op2, code); // StringBuffer2 in Zahl verwandeln case op of // Operation durchführen '+': res:= op1 + op2; '-': res := op1 - op2; '*': res := op1 * op2; '/': res := op1 / op2 end; s:= Format('%g',[res]); // Ergebnis formatieren Label1.Caption := s; // ... und anzeigen mode := 1; strBuff1 := '' end end; procedure TForm1.Button18Click(Sender: TObject); // Rechner ausschalten begin Close end; procedure TForm1.FormCreate(Sender: TObject); begin Application.HelpFile := 'Taschenrechner.hlp' end; procedure TForm1.Button19Click(Sender: TObject); begin Application.HelpJump('Inhalt') end; procedure TForm1.Hilfe2Click(Sender: TObject); begin Application.HelpJump('Inhalt') end; end. |
Re: Taschenrechner
Hi egon,
danke für die Hilfe.. hast du auch das zum runterladen, damit ich mir auch die schaltflächen anschauen kann wie sie aufgebaut sind.. von mir aus auch nur ein foto von der main |
Re: Taschenrechner
Zitat:
|
Re: Taschenrechner
ich hab es eigentlich schon verstanden. Die frage die ich mich stelle ist nur, z.B rocedure TForm1.ZeiButtonClick(Sender: TObject); muss man das selber erstellen oder wird die automatisch erstellt wenn ich aud die zahelen klicke, das gleiche gilt auch für procedure TForm1.OpButtonClick(Sender: TObject);
muss ich die während der programmierung selber erzeugen? |
Re: Taschenrechner
Durch Anklicken des Buttons oder dem Event im OI
|
Re: Taschenrechner
ich habe ja aber 9 zahelen oder 4 operatoren.. also demenstsrechend auch soviele buttons, wie mache ich das wenn ich auf 1 oder 4 das er dann auf die gleiche procedure kommt..
|
Re: Taschenrechner
Diese im Event im OI des entsprechenden Objektes auswählen
|
Re: Taschenrechner
aber wenn ich auf button 14 klicke dann kommt er automatisch auf die procedure von button 14 oder wenn ich auf button klicke dann kommt er auf button 13.. aber ich will ja das die 4 operatoren das gleiche procedure haben.. procedure TForm1.OpButtonClick(Sender: TObject);
|
Re: Taschenrechner
Zitat:
|
Re: Taschenrechner
aber von wo kommt z.B das procedure TForm1.ZeiButtonClick(Sender: TObject);
muss ich das selber erzeugen oder wurde es selbst erzeugt..? wenn ich ja das programm anfange zu schreiben dann habe ich ja noch keine procedure TForm1.ZeiButtonClick(Sender: TObject); ich galaub ich kann das nicht so gut erklären.. Das mit OI habe ich schon verstanden.. |
Re: Taschenrechner
Du kannst diese z.B. mit einem Klick auf den ersten Button erzeugen lassen oder legst diese im Code an
|
Re: Taschenrechner
also demetnsprechend umbennen oder wie?
|
Re: Taschenrechner
Der Namen der Eventmetode ist ja grundsätzlich egal
|
Re: Taschenrechner
Hi
Nun, meine erste Antwort war eigentlich ernst gemeint. Benutze die Suche. Da findest du sicherlich auch Taschenrechner mit einem Eingabetextfeld. Es verwundert mich ein Wenig, wenn du noch nicht einmal die Verwendung von Variablen kennst. Wo lernst du oder wer bringt dir diese Sprache bei. Oder soll ich fragen, wer versucht es? Delphi ist ein sooo einfaches Programm.... einfach ein paar Elemente aus der Toolbox und schon zeigt sich ein schönes funktionierendes Programm. Es gibt Buttons, die man anklicken und Textfelder, in die man hineinschreiben kann. Doch Programmieren ist mehr. Und da weiß ich im Moment nicht, was ich davon halten soll. "Was ist ein Zwischenspeicher ?" Das sind Grundlagen. Mir kommt's vor, als wenn du ohne Kenntisse der 4 Grundrechenarten eine Parabel berechnen willst. Oder irgendwas anderes kompliziertes... Als, die Grundlagen sollte dir dein Lehrer schon einmal beibringen, damit du verstehst, was wir dir an Hilfe geben können. Hier mal eine mögliche Hilfe... Du deklarierst eine Double-Variable. Mit dem Button C setzt du diese auf 0. (Clear) Du setzt weitere Buttons auf deine Form (0-9) sowie Komma oder Punkt und die Rechenarten +,-,* und /. Nun ordnest du allen ihre Ereignisprozeduren zu. Bei den Ziffern könnte das so aussehen:
Delphi-Quellcode:
bei den mathematischen Tasten sieht es ähnlich aus, nur das du die Berechnung durchführen mußt. etwa so:
TMyForm.Bt_ZweiClick(Sender:TObject);
Begin If Neueingabe then ED_Eingabe.Text:=''; // bei einer neuen Zahl das Textfeld leeren Neueingabe:=False; // und die Markierung zurücknehmen Ed_Eingabe.Text:=ED_Eingabe.Text+'2'; // die Ziffer anhängen end;
Delphi-Quellcode:
Hier ist noch viel dran zu arbeiten, z.B. die Abfrage, ob im Textfeld eine gültige Zahl für die Wandlung steht, denn Text ist mathematisch nich berechenbar. Daher mußt du in das entsprechende Format wandeln und zur Ausgabe wieder in Text zurück. Vielleicht hilft es dir. Zur Namensgebung:
TMyForm.Bt_PlusClick(Sender:TObject);
Begin Zwischenspeicher:=Zwischenspeicher+StrToFloat(Ed_Eingabe.Text); Ed_Eingabe.Text:=FloatToStr(Zwischenspeicher); Neueingabe:=True; // eine neue Eingabe markieren End; Natürlich kannst du die vorgeschlagenen und automatisch erzeugten Namen benutzen, aber es wird dann leicht unübersichtlich. Daher benutze ich bei Editfeldern das Kürzel "ED_" und dann einen aussagekräftigen Namen. Ebenso be BUttons.. "BT_". Somit finde ich mich auch in umfangreichen Programmen zurecht. Gruß oldmax |
Re: Taschenrechner
:drunken:
Hallo Safak67, tut mir leid,konnte nicht sofort antworten. Also zum Thema Taschenrechner. Du brauchst 18 Buttons,und ein Label. 7 8 9 CE 4 5 6 X / 1 2 3 + - 0 . = Ende Kann leider kein Bild schicken,betrachte die Zahlen und Symbole als Button. Gruß Egon |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz