![]() |
procedures zusammenfassen/vereinfachen (Totale Anfängerfrae)
Hallo!
Ich bin absoluter Neuling in Delphi und hab shcon gleich ne Frage, die mir fast schon peinlich ist^^
Delphi-Quellcode:
Wie kann ich obiges einfach und unkompliziert zusammenfassen? Danke schonmal!
procedure TForm1.B0Click(Sender: TObject);
begin Display.Caption := Display.Caption + (sender as TButton).Caption; end; procedure TForm1.B1Click(Sender: TObject); begin Display.Caption := Display.Caption + (sender as TButton).Caption; end; procedure TForm1.B2Click(Sender: TObject); begin Display.Caption := Display.Caption + (sender as TButton).Caption; end; procedure TForm1.B3Click(Sender: TObject); begin Display.Caption := Display.Caption + (sender as TButton).Caption; end; procedure TForm1.B4Click(Sender: TObject); begin Display.Caption := Display.Caption + (sender as TButton).Caption; end; procedure TForm1.B5Click(Sender: TObject); begin Display.Caption := Display.Caption + (sender as TButton).Caption; end; procedure TForm1.B6Click(Sender: TObject); begin Display.Caption := Display.Caption + (sender as TButton).Caption; end; procedure TForm1.B7Click(Sender: TObject); begin Display.Caption := Display.Caption + (sender as TButton).Caption; end; procedure TForm1.B8Click(Sender: TObject); begin Display.Caption := Display.Caption + (sender as TButton).Caption; end; procedure TForm1.B9Click(Sender: TObject); begin Display.Caption := Display.Caption + (sender as TButton).Caption; end; |
Re: procedures zusammenfassen/vereinfachen
Einfach allen Buttons den selben Eventhandler zuweisen.. Das mit dem Sender hast du ja schon richtig, fehlt nur noch der letzte Schritt ;)
|
Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf
Ah natürlich! Leuchtet ein :wall: Danke für den Hinweis!
Gibt es auch noch eine Möglichkeit folgendes einfacher auszudrücken:
Delphi-Quellcode:
?
if op ='+' then
begin Display.Caption := FloatToStr(Eingabe1 + Eingabe2); end; if op ='-' then begin Display.Caption := FloatToStr(Eingabe1 - Eingabe2); end; if op ='/' then begin Display.Caption := FloatToStr(Eingabe1 / Eingabe2); end; if op ='*' then begin Display.Caption := FloatToStr(Eingabe1 * Eingabe2); end; |
Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf
Hallo Tobicaster,
einfacher geht es nicht, aber kürzer! Schau dir dazu mal case ... of an. Flare |
Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf
Ah ich hab's!
Delphi-Quellcode:
So scheint's zu funktionieren.
procedure TForm1.BGleichClick(Sender: TObject);
begin Eingabe2 := StrToFloat(Display.Caption); case op of '+': begin Display.Caption := FloatToStr(Eingabe1 + Eingabe2); end; '-': begin Display.Caption := FloatToStr(Eingabe1 - Eingabe2); end; '*': begin Display.Caption := FloatToStr(Eingabe1 * Eingabe2); end; else try Display.Caption := FloatToStr(Eingabe1 / Eingabe2); except Display.Caption := 'Geht nicht!';; end; end; end; Danke! |
Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf
Hai Tobicaster,
ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS". Bei deinem Code musst Du noch eines beachten. Wenn nach dem ersten durchlauf Display.Caption auf "Geht nicht!" gesetzt wird würdest Du bei einem erneuten klick auf einen der Buttons eine Exception in der Zeile
Code:
bekommen.
Eingabe2 := StrToFloat(Display.Caption);
|
Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf
Hallo Tobicaster, deinen Code hätte ich so nicht geschrieben. Der Divisor hat nichts in ELSE zu suchen. Im Endeffekt ändert sich da wohl nichts, da du wohl aufpassen wirst, aber trotzdem. Jedem Operator eine Zuweisung und überhaupt kein ELSE.
Zitat:
Delphi-Quellcode:
Warum willst du die Fehlermeldung dem Programm überlassen?
if Eingabe2 = 0 then
Display.Caption := 'ERROR (Division durch Null)' else Display.Caption := FloatToStr(Eingabe1 / Eingabe2); |
Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf
Zitat:
Delphi-Quellcode:
if Eingabe2 <> 0 then
begin Display.Caption := FloatToStr(Eingabe1 / Eingabe2); end else begin Display.Caption := 'ERROR (Division durch Null)'; end; |
Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf
Ah, wieder was dazu gelernt. Macht natürlich Sinn.
Aber wieso hat der Divisor nichts in ELSE zu suchen bzw. was ist der Grund dafür, dass einige Sachen nicht "missbraucht" werden sollten? |
Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf
Die Division sollte in einen eigenen Fall, damit du einen Fehler ausgeben kannst, falls in Op irgendwelcher Quatsch steht. Und Exceptions sollte man nicht verwenden, wenn es auch genauso einfach ohne geht, denn Exception sind ziemlich langsam und tragen viel Overhead mit sich.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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