Statt diesem
Delphi-Quellcode:
procedure TForm1.btnTrapezClick(Sender: TObject);
var MyFigure : TFigur;
begin
MyFigure := TTrapez.create;
try
MyFigure.SeiteA:=strtofloat(edtSeiteA.text);
MyFigure.SeiteB:=strtofloat(edtSeiteB.text);
TTrapez(MyFigure).Hoehe := 20; // Um die Hoehe ansprechen zu können ist ein Cast notwendig
lblErg.caption:=floattostr(MyFigure.BerechneFl);
finally
MyFigure.Free;
end;
end;
würd' ich lieber das machen:
Delphi-Quellcode:
procedure TForm1.btnTrapezClick(Sender: TObject);
var MyFigure : TTrapez;
begin
MyFigure := TTrapez.create;
try
MyFigure.SeiteA:=strtofloat(edtSeiteA.text);
MyFigure.SeiteB:=strtofloat(edtSeiteB.text);
MyFigure.Hoehe := 20;
lblErg.caption:=floattostr(MyFigure.BerechneFl);
finally
MyFigure.Free;
end;
end;
Casten würd' ich in soeiner Situation:
Delphi-Quellcode:
function FlaecheBerechnen(Sender: TFigure) : Double;
begin
if Sender is TTrapez then Result := TTrapez(Sender).BerechneFl
else
if Sender is TRechteck then Result := TRechteck(Sender).BerechneFl
else
if Sender is TDreieck then Result := TDreieck(Sender).BerechneFl
else
if Sender is TFigur then Result := TFigur(Sender).BerechneFl
else Raise('unbekannte Figur');
end;
// Aufruf:
procedure TForm1.BtnBerechnenClick(Sender: TObject);
begin
MyFigure := TTrapez.create; // der gewünschte Typ, den könnte man z. B. über 'n TRadioGroup auswählen.
try
MyFigure.SeiteA := strtofloat(edtSeiteA.text);
MyFigure.SeiteB := strtofloat(edtSeiteB.text);
MyFigure.Hoehe := strtofloat(edtHoehe.text);
lblErg.caption := floattostr(FlaecheBerechnen(myFigure));
finally
MyFigure.Free;
end;
end;