![]() |
AW: Ausführen einer Methode bei MethodAddress
Ja, ich glaube ich war jetzt einfach etwas zu schnell und ungenau, sorry
|
AW: Ausführen einer Methode bei MethodAddress
Zitat:
|
AW: Ausführen einer Methode bei MethodAddress
Zitat:
Wenn es Keines ist, dann gibt es eine "passende" Exception, denn
Delphi-Quellcode:
.
(acomp as TGraphicControl)
Aber hier
Delphi-Quellcode:
würde es nicht geprüft.
TGraphicControl(acomp)
Achtung, IS und AS haben beim NIL einen kleinen UInterschied. IS sagt False, wenn es NIL ist, also wenn es nicht "dieser Typ" ist. AS dagegen läßt NIL durch, da es nur püpft, ob es der richtige Typ ist ... und NIL ist nicht ein "falscher Typ", da es nichts ist. Zitat:
|
AW: Ausführen einer Methode bei MethodAddress
Zitat:
Delphi-Quellcode:
if Assigend(aComp)
Zitat:
Delphi-Quellcode:
and (aComp is TGraphicControl)
Zitat:
Delphi-Quellcode:
sollte die Zuweisung auf height erst dann erfolgen, wenn acomp sowohl etwas zugewiesen wurde, also nicht Nil ist, dieses Etwas vom Typ TGraphicControl ist und damit über das Attribut Height von TGraphicControl geerbt haben sollte. Soweit ich das sehe, sollten die von Dir genannten Bedingungen alle (ohne Exception) geprüft und vor dem Zuweisen von 200 auf das Attribut Height erfüllt sein. Also dürfte auch
then TGraphicControl(acomp).Height := 200;
Zitat:
|
AW: Ausführen einer Methode bei MethodAddress
Tu Dir einen Gefallen und verwende - wie Jaenicke weiter oben vorgeschlagen hat - Interfaces. Lose koppeln, wo immer möglich.
Das gibt Dir die Möglichkeit, auch an fremde Klassen mit ganz anderer Vererbungs-Hierarchie noch etwas dranzukleben. |
AW: Ausführen einer Methode bei MethodAddress
Interfaces bieten viele Vorteile, aber diese kommen erst richtig zur Geltung, wenn man sie auch in der Architektur berücksichtigt. Insofern ist die gemeinsame Basisklasse erst einmal die einfachste Lösung für das konkrete Problem.
Trotzdem macht es natürlich Sinn, sich anzuschauen, wie es mit Interfaces gehen würde, um diese künftig im Hinterkopf zu haben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 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