AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Ausführen einer Methode bei MethodAddress

Ein Thema von josef-b · begonnen am 4. Feb 2024 · letzter Beitrag vom 5. Feb 2024
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.559 Beiträge
 
Delphi 7 Professional
 
#1

AW: Ausführen einer Methode bei MethodAddress

  Alt 5. Feb 2024, 00:30
weder ... noch prüfst Du, ob aComp überhaupt vom Typ TGraphicControl ist.
Doch doch.

Wenn es Keines ist, dann gibt es eine "passende" Exception, denn (acomp as TGraphicControl) .
Deshalb prüfe ich mit if Assigend(aComp)
Aber hier TGraphicControl(acomp) würde es nicht geprüft.
deshalb prüfe ich mit and (aComp is TGraphicControl)
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.
und mit dem anschließenden then TGraphicControl(acomp).Height := 200; 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
Dann kannst du darauf casten
erfüllt sein.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
685 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ausführen einer Methode bei MethodAddress

  Alt 5. Feb 2024, 08:18
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.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.978 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ausführen einer Methode bei MethodAddress

  Alt 5. Feb 2024, 18:34
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:46 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