AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi procedures zusammenfassen/vereinfachen (Totale Anfängerfrae)
Thema durchsuchen
Ansicht
Themen-Optionen

procedures zusammenfassen/vereinfachen (Totale Anfängerfrae)

Ein Thema von Tobicaster · begonnen am 12. Nov 2007 · letzter Beitrag vom 12. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
Tobicaster

Registriert seit: 12. Nov 2007
29 Beiträge
 
#1

procedures zusammenfassen/vereinfachen (Totale Anfängerfrae)

  Alt 12. Nov 2007, 00:52
Hallo!

Ich bin absoluter Neuling in Delphi und hab shcon gleich ne Frage, die mir fast schon peinlich ist^^



Delphi-Quellcode:
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;
Wie kann ich obiges einfach und unkompliziert zusammenfassen? Danke schonmal!
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: procedures zusammenfassen/vereinfachen

  Alt 12. Nov 2007, 00:58
Einfach allen Buttons den selben Eventhandler zuweisen.. Das mit dem Sender hast du ja schon richtig, fehlt nur noch der letzte Schritt
  Mit Zitat antworten Zitat
Tobicaster

Registriert seit: 12. Nov 2007
29 Beiträge
 
#3

Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf

  Alt 12. Nov 2007, 01:16
Ah natürlich! Leuchtet ein 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;
?
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#4

Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf

  Alt 12. Nov 2007, 01:20
Hallo Tobicaster,

einfacher geht es nicht, aber kürzer! Schau dir dazu mal case ... of an.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Tobicaster

Registriert seit: 12. Nov 2007
29 Beiträge
 
#5

Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf

  Alt 12. Nov 2007, 01:42
Ah ich hab's!

Delphi-Quellcode:
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;
So scheint's zu funktionieren.

Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf

  Alt 12. Nov 2007, 07:32
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:
Eingabe2 := StrToFloat(Display.Caption);
bekommen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf

  Alt 12. Nov 2007, 08:55
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 von Tobicaster:
Delphi-Quellcode:
 case op of
    '+': ...
    '-': ...
    '*': ...
    '/': ...
  end;
Außerdem, persönlich bin ich kein Freund von try/except Missbrauch bei Programmierung. try/except ist nur für den unvorhersehbaren Fall. Eine Division durch Null sollte man selbst abfangen. Das könnte in etwa so aussehen:

Delphi-Quellcode:
    if Eingabe2 = 0 then
      Display.Caption := 'ERROR (Division durch Null)'
    else
      Display.Caption := FloatToStr(Eingabe1 / Eingabe2);
Warum willst du die Fehlermeldung dem Programm überlassen?
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf

  Alt 12. Nov 2007, 09:16
Zitat von Popov:
Delphi-Quellcode:
    if Eingabe2 = 0 then
      Display.Caption := 'ERROR (Division durch Null)'
    else
      Display.Caption := FloatToStr(Eingabe1 / Eingabe2);
Warum willst du die Fehlermeldung dem Programm überlassen?
Also ich persönlich mach das immer anderstrum, den "guten" Fall zuerst und dann den "schlechten" Fall. Das find ich übersichtlicher.

Delphi-Quellcode:
    if Eingabe2 <> 0 then
    begin
      Display.Caption := FloatToStr(Eingabe1 / Eingabe2);
    end
    else
    begin
      Display.Caption := 'ERROR (Division durch Null)';
    end;
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Tobicaster

Registriert seit: 12. Nov 2007
29 Beiträge
 
#9

Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf

  Alt 12. Nov 2007, 18:06
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?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: procedures zusammenfassen/vereinfachen (Totale Anfängerf

  Alt 12. Nov 2007, 18:09
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr.
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