AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ausführen einer Methode bei MethodAddress

Ein Thema von josef-b · begonnen am 4. Feb 2024 · letzter Beitrag vom 5. Feb 2024
Antwort Antwort
Seite 2 von 2     12   
josef-b

Registriert seit: 6. Jun 2004
Ort: bei Jena in Thüringen
95 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Ausführen einer Methode bei MethodAddress

  Alt 4. Feb 2024, 21:36
Ja, ich glaube ich war jetzt einfach etwas zu schnell und ungenau, sorry
  Mit Zitat antworten Zitat
josef-b

Registriert seit: 6. Jun 2004
Ort: bei Jena in Thüringen
95 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Ausführen einer Methode bei MethodAddress

  Alt 4. Feb 2024, 22:31
Wenn das alles deine eigenen Klassen sind, leite sie doch einfach von einer gemeinsamen Elternklasse ab, die diese Funktionalität bereitstellt. Dann kannst du darauf casten.
So habe ich das jetzt gemacht. Funktioniert prima. Vielen Dank für Eure Hilfe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.084 Beiträge
 
Delphi 12 Athens
 
#13

AW: Ausführen einer Methode bei MethodAddress

  Alt 4. Feb 2024, 23:04
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) .

Aber hier TGraphicControl(acomp) würde es nicht geprüft.


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:
Dann kannst du darauf casten
Nicht vergessen, dass beim Zugriff über einen Vorfahr-Typen eventuell ein VIRTUAL + OVEERRIDE nötig ist, wenn die Funktionalität erst in den Nachfahren steckt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Feb 2024 um 23:08 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.491 Beiträge
 
Delphi 7 Professional
 
#14

AW: Ausführen einer Methode bei MethodAddress

  Alt 5. Feb 2024, 01: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
679 Beiträge
 
Delphi 12 Athens
 
#15

AW: Ausführen einer Methode bei MethodAddress

  Alt 5. Feb 2024, 09: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.592 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Ausführen einer Methode bei MethodAddress

  Alt 5. Feb 2024, 19: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
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz