![]() |
Was bedeudet 'as' in Delphi?
Delphi-Quellcode:
procedure TPanelX.InitializeControl;
begin FDelphiControl := Control as TPanel; //<== Was passiert hier? FDelphiControl.OnCanResize := CanResizeEvent; FDelphiControl.OnClick := ClickEvent; FDelphiControl.OnConstrainedResize := ConstrainedResizeEvent; FDelphiControl.OnDblClick := DblClickEvent; FDelphiControl.OnResize := ResizeEvent; end; |
Control ist von irgeneinem Typ, eventuell TControl.
FDelphiControl ist vom Typ TPanel. Der as Operator macht eine Panele aus Control. Ist Control nicht mit TPanel verwandt, bekommst du eine Exception. mfg Daniel |
In der OH (Lesen bildet :lol: ) steht folgendes:
Zitat:
|
Also wenn ich das richtig verstehe ist das nur so eine Art absicherung, oder :?:
|
Wohl eher eine Art notwendiger Typecast.
|
Moin Sanchez,
Zitat:
Prinzipiell ginge statt
Delphi-Quellcode:
auch
control as TPanel
Delphi-Quellcode:
und eine Exception gäbe es nur, wenn, in diesem Falle FDelphiControl, Methoden/Eigenschaften eines TPanel zu nutzen versuchen würde, die es in der durch Control angegebenen Kompo nicht gibt.
TPanel(Control)
Mit diesem Typecast übernimmt man sozusagen dem Compiler gegenüber die Verantwortung dafür, dass Control auch wirklich als TPanel verwendbar ist. |
Mit TPanel(control) übernimmt man selbst die Verantwortung.
Mit control as TPanel allerdings nicht, weil eine Typprüfung durchgeführt wird. Zitat:
mfg Daniel |
Moin Sanchez,
Stimmt, :oops:, hast Du auch wieder Recht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 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