AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Auf private-Variable aus abgeleiteter Klasse zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

Auf private-Variable aus abgeleiteter Klasse zugreifen

Ein Thema von sirius · begonnen am 12. Jul 2007 · letzter Beitrag vom 12. Jul 2007
Antwort Antwort
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#1

Auf private-Variable aus abgeleiteter Klasse zugreifen

  Alt 12. Jul 2007, 10:54
Kann man auf diese private xyz Variable irgendwie aus T2 zugreifen?
Delphi-Quellcode:
unit unit1

type T1=class
       private
         xyz:integer;
end;

//...
unit unit2

uses unit1;

type T2=class(T1)
       //...

      property a:integer read yxz;
end;
Oder einfach nur generell auf xyz zugreifen wenn ich Methoden in T2 implementiere.

Warum? Ich würde gern FWindowHandle aus TTimer wissen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Auf private-Variable aus abgeleiteter Klasse zugreifen

  Alt 12. Jul 2007, 10:56
Nein. Private Variablen sind nur für abgeleitete Klassen sichtbar wenn diese in der gleichen Unit liegen!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Auf private-Variable aus abgeleiteter Klasse zugreifen

  Alt 12. Jul 2007, 10:58
Zitat von Bernhard Geyer:
Nein. Private Variablen sind nur für abgeleitete Klassen sichtbar wenn diese in der gleichen Unit liegen!
Danke! Hab ich mir fast gedacht. Ich hatte noch die Hoffnung, dass ich etwas übersehen habe.
Ich habe jetzt den Source von TTimer in meine Unit kopiert.
Wieso haben die mir bloß verboten auf FwindowHandle zuzugreifen ?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Auf private-Variable aus abgeleiteter Klasse zugreifen

  Alt 12. Jul 2007, 11:09
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Auf private-Variable aus abgeleiteter Klasse zugreifen

  Alt 12. Jul 2007, 11:12
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:
type
  TPseudoTimer = class(TComponent)
  public
    FInterval: Cardinal;
    FWindowHandle: HWND;
  end;

var
  windowHandle : HWND;
begin
  windowHandle := TPseudoTimer(deinTimer).FWindowHandle;
end;
Oder du weißt den Fieldoffset von FWindowHandle (bei D7 ist das 52):windowHandle := HWND(Pointer(Integer(deinTimer) + 52)^) Wem jetzt nicht markant übel wird, sollte sich dringend überlegen, ob er etwas als Programmierer taugt.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Auf private-Variable aus abgeleiteter Klasse zugreifen

  Alt 12. Jul 2007, 11:15
@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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Auf private-Variable aus abgeleiteter Klasse zugreifen

  Alt 12. Jul 2007, 11:20
Zitat von SirThornberry:
@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.
Ups, jo das ist natürlich wahr. "Pointer" ist ja kein Integer, sondern ein Cardinal. Bin ja auch eigentlich ein verweichlichter .Net-Dev und kein nativer Bitschubser.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Auf private-Variable aus abgeleiteter Klasse zugreifen

  Alt 12. Jul 2007, 11:32
@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. 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.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort


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:48 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