Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: Delphi Rechnung mit Label

  Alt 3. Mai 2013, 17:28
Markus (mkinzler) hat es ja bereits angedeutet: Du solltest es vermeiden, Anzeigekomponenten als Datenspeicher zu missbrauchen. Da Du ja etwas berechnen willst/musst, brauchst Du auch Variablen bzw. Felder von entsprechenden Zahlentypen (z.B. Integer für ganze Zahlen oder double für Gleitkommazahlen). Die Komponenten dienen dann als Schnittstelle zwischen Benutzer und diesen Variablen/Feldern. In größeren Projekten würde ich dazu raten, den ganzen "Berechnungsskram" in eine eigene Klasse auszulagern, aber das ist in diesem Fall wohl etwas oversized, und außerdem ist der "gemeine Delphi-Anfänger" (das ist nicht wertend gemeint) damit aller Wahrscheinlichkeit hoffnungslos überfordert. Ein einfaches Beispiel: ein Formular mit 2 Edits, einem Button und einem Label. In die Edits sollen jeweils Zahlen eingegeben werden, auf Button-Click soll die Summe dieser Zahlen im Label ausgegeben werden. Achtung: der folgende Code ist im Editor getippt und daher ungetestet. Außerdem habe ich auf jegliche Fehlerbehandlung verzichtet:
Delphi-Quellcode:
type
  TRechenForm = class(TForm)
    (* Edits für die Eingabe *)
    edtZahl1: TEdit;
    edtZahl2: TEdit;
    (* Button, der die Berechnung anstoßen soll *)
    btnRechne: TButton;
    (* Ausgabelabel *)
    lblErgebnis: TLabel;
    (* Ereignis, das bei Click des Buttons ausgelöst werden soll *)
    procedure btnRechneClick(Sender: TObject);
  private
    (* private Felder, mit denen gerechnet werden soll *)
    FZahl1: integer;
    FZahl2: integer;
    FErgebnis: integer;
    (* Deklaration der Rechenroutine *)
    procedure Rechne;
  end;

...

procedure TRechenForm.Rechne;
begin
  (* Berechnung *)
  Ergebnis := FZahl1 + FZahl2;
end;

procedure TRechenForm.btnRechneClick(Sender: TObject);
begin
  (* Umwandlung der Eingaben in Zahlen und Zuweisung an die Felder *)
  FZahl1 := StrToInt(edtZahl1.Text);
  FZahl2 := StrToInt(edtZahl2.Text);
  (* Berechnung aufrufen *)
  Rechne;
  (* Ausgabe des Ergebnisses, dabei Umwandlung von Zahl -> String *)
  lblErgebnis.Caption := IntToStr(FErgebnis);
end;
Dass da die Fehlerbehandlung fehlt, wirst Du merken, wenn Du die Edits leer lässt oder etwas anderes als Ziffern eingibst und dann auf den Button klickst. Ich hoffe, es hilft Dir trotzdem etwas weiter.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat