![]() |
Auf private-Variable aus abgeleiteter Klasse zugreifen
Kann man auf diese private xyz Variable irgendwie aus T2 zugreifen?
Delphi-Quellcode:
Oder einfach nur generell auf xyz zugreifen wenn ich Methoden in T2 implementiere.
unit unit1
type T1=class private xyz:integer; end; //... unit unit2 uses unit1; type T2=class(T1) //... property a:integer read yxz; end; Warum? Ich würde gern FWindowHandle aus TTimer wissen. |
Re: Auf private-Variable aus abgeleiteter Klasse zugreifen
Nein. Private Variablen sind nur für abgeleitete Klassen sichtbar wenn diese in der gleichen Unit liegen!
|
Re: Auf private-Variable aus abgeleiteter Klasse zugreifen
Zitat:
Ich habe jetzt den Source von TTimer in meine Unit kopiert. Wieso haben die mir bloß verboten auf FwindowHandle zuzugreifen :gruebel:? |
Re: Auf private-Variable aus abgeleiteter Klasse zugreifen
weil dich das Handle gar nicht interessieren sollte bei dem Timer. Denn der Timer stellt als Funktionalität das wiederholte Aufrufen einer Callback-Methode bereit. Und wenn du diese Funktionalität erweitern willst sollte es nicht nötig sein das Handle zu erfahren.
|
Re: Auf private-Variable aus abgeleiteter Klasse zugreifen
Es gibt viele böse Wege um zu erreichen was du willst, und alle vertrauen darauf, dass Delphi nicht type safe ist...
Eine Pseudoklasse, mit den gleichen Feldern mindestens bis zum gewünschten FWindowHandle:
Delphi-Quellcode:
Oder du weißt den Fieldoffset von FWindowHandle (bei D7 ist das 52):
type
TPseudoTimer = class(TComponent) public FInterval: Cardinal; FWindowHandle: HWND; end; var windowHandle : HWND; begin windowHandle := TPseudoTimer(deinTimer).FWindowHandle; end;
Delphi-Quellcode:
Wem jetzt nicht markant übel wird, sollte sich dringend überlegen, ob er etwas als Programmierer taugt. :mrgreen:
windowHandle := HWND(Pointer(Integer(deinTimer) + 52)^)
|
Re: Auf private-Variable aus abgeleiteter Klasse zugreifen
@Elvis: Ein guter Ansatz aber bitte nicht zu Integer casten sondern Cardinal. Ansonsten kannst du pech haben und dein cast zu signed schlägt ins Negative womit dann überhaupt nix stimmt.
|
Re: Auf private-Variable aus abgeleiteter Klasse zugreifen
Zitat:
|
Re: Auf private-Variable aus abgeleiteter Klasse zugreifen
@sir
Mich hat es letzenendes gar nicht in der abgeleiteten Klasse interessiert sondern in dem Modul/Klasse in der ich TTimer verwende. Da das ganze in einem eigenen Thread ist, musste ich für den Timer eine kleine ProcessMessages-Methode schreiben. Und dabei wandele ich lieber auf sicherem Pfad und picke mir nur die Messages an meinem Timer aus der Message-Queue. @elvis Ja, der ist nicht schlecht. :mrgreen: Aber copy&paste hats auch gemacht. Und da konnte ich gleich die ExtCtrls rausschmeissen und noch ein paar kleine Änderungen direkt in der Klasse vornehmen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 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