AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Klassenvariable an übergeordnete Klasse übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Klassenvariable an übergeordnete Klasse übergeben

Ein Thema von devidespe · begonnen am 2. Jun 2008 · letzter Beitrag vom 2. Jun 2008
Antwort Antwort
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Klassenvariable an übergeordnete Klasse übergeben

  Alt 2. Jun 2008, 14:56
Hallo,

ich habe 2 Klassen, wobei vom Mainform die Oberklasse aufgerufen wird, welche wiederum die Unterklasse aufruft. Dabei soll eine Byte-Variable durch die einzelnen Klassen "geschliffen" werden, und ich brauche da wohl einen Denkansatz:

Delphi-Quellcode:
TYPE TOberklasse = CLASS( TObject )
     PRIVATE
       LocalNr : Byte;
       Unterklasse : TUnterklasse;
     PROTECTED
     PUBLIC
       PROPERTY Nr : Byte READ LocalNr WRITE LocalNr;
       CONSTRUCTOR Create; OVERLOAD;
     END;

     TUnterklasse = CLASS( TOberklasse )
     PRIVATE
       LocalNr : Byte;
     PROTECTED
     PUBLIC
       PROPERTY Nr : Byte READ LocalNr WRITE LocalNr;
       CONSTRUCTOR Create; OVERLOAD;
     END;

IMPLEMENTATION

FUNCTION TOberklasse.Create;
BEGIN
  INHERITED;
  ShowMessage(IntToStr(LocalNr)+' wurde übergeben.');
END;

FUNCTION TUnterklasse.Create;
BEGIN
  INHERITED;
  ShowMessage(IntToStr(LocalNr)+' wurde übergeben.');
END;

PROCEDURE TMainForm.StartKlasse;
VAR Oberklasse : TOberklasse;
BEGIN
  Oberklasse:=TOberklasse.Create;
  Oberklasse.Nr:=Random(256); {hier muss ich irgendwie die lokale Byte-Variable Nr an die Oberklasse übergeben}
END;
Ich hatte versucht, das über ein Property zu regeln, allerdings habe ich dann das Problem, dass ich dieses ja erst zuweisen kann, sobald die Klasse mit Create erstellt wurde. Ich will aber direkt in der Create-Funktion die Variable weiterverarbeiten.

Wenn ich das Property nach der Create-Funktion zuweise, kann ich es in Create ja nicht weiterverarbeiten...
Devid
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Klassenvariable an übergeordnete Klasse übergeben

  Alt 2. Jun 2008, 15:03
Delphi-Quellcode:
FUNCTION TOberklasse.Create;
BEGIN
  INHERITED;
  Unterklasse := TUnterklasse.Create;
  ShowMessage(IntToStr(LocalNr)+' wurde übergeben.');
END;

FUNCTION TUnterklasse.Create;
BEGIN
  INHERITED;
  ShowMessage(IntToStr(LocalNr)+' wurde übergeben.');
END;

PROCEDURE TMainForm.StartKlasse;
VAR Oberklasse : TOberklasse;
BEGIN
  Oberklasse:=TOberklasse.Create;
  Oberklasse.Unterklasse.Nr:=Random(256);
END;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#3

Re: Klassenvariable an übergeordnete Klasse übergeben

  Alt 2. Jun 2008, 15:20
Oh Graus , hat das einen Grund, dass du alle reservierten Worte groß schreibst?
  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: Klassenvariable an übergeordnete Klasse übergeben

  Alt 2. Jun 2008, 15:27
du könntest dem Constructor der Unterklasse einfach die Oberklasse übergeben.
Delphi-Quellcode:
type
  TUnterklasse = class(TIrgendwas)
  private
    fOberklasse: TOberklasse;
  public
    constructor Create(AOberklasse: TOberklasse);
    procedure DoAnything();
  end;

[...]

constructor TUnterklasse.Create(AOberklasse: TOberklasse);
begin
  inherited Create();
  fOberklasse := AOberklasse;
end;

procedure TUnterklasse.DoAnything();
begin
  fOberklasse.DoAnything();
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Klassenvariable an übergeordnete Klasse übergeben

  Alt 2. Jun 2008, 16:59
Ist es Absicht, dass deine TUnterklasse von TOberklasse ableitest? Dann solltest du es nämlich tunlichst vermeiden, neue Felder und Eigenschaften mit alten Namen neu einzuführen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  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 08:50 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