Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#6

Re: [OOP]: Typenumwandlung / Casten

  Alt 10. Sep 2004, 12:50
Zitat von dizzy:
Zitat von mytar:
Upcasten
...geht nicht. (imho)
Geht ja wohl

Voraussetzung ist allerdings, das das Ding vorher irgendwie (z.B. durch einen Prozeduraufruf) schon heruntergecasted wurde.

Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
   // harter upcast
   TButton(Sender).Caption := 'clicked';

   // soft upcast
   (Sender as TButton).Caption := 'clicked';

   // ganz sicher:
   if sender is TButton then
   with sender as TButton do
   begin
      Caption := 'clicked';
   end;
end;
Hier wird ein TObject also hochgecasted, und das in den verschiedenen möglichkeiten. Sowas wird meistens dann verwendet, wenn man ein OnClick-Event für verschiedene Buttons verwendet und / oder mit dem entprechenden Control gleich was machen will (z.B. deaktivieren oder so).
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat