Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Typen, Records einer Klasse vererben ? (https://www.delphipraxis.net/168491-typen-records-einer-klasse-vererben.html)

Nic2012 24. Mai 2012 11:10

Typen, Records einer Klasse vererben ?
 
In einer Klasse wurde ein Record deklariert und wird innerhalb dieser Basisklasse benutzt.
In der Ableitung dieser Klasse ist in der eig. Anwendung der Record nicht mehr sichtbar. Als Workaround muss ich nun zusatzlich zur Unit mit der abgel. Klasse noch die Unit der Basisklasse hinzufügen.

Wie lässt sich so ein Record der Basisklasse also "weitervererben" ?

Ich benutze ausschl. D7pro.

silver-moon-2000 24. Mai 2012 11:45

AW: Typen, Records einer Klasse vererben ?
 
Zitat:

Zitat von Nic2012 (Beitrag 1167906)
Wie lässt sich so ein Record der Basisklasse also "weitervererben" ?

Kann sein, dass ich Dich falsch verstehe, aber reicht es nicht, wenn Du die Sichtbarkeit des Records auf protected (oder höher) setzt?

Delphi-Quellcode:
type TMyRec = record
//[...]
end;

type TBase = class(TObject)
//[...]
  protected
    FMyRec : TMyRec;
//[...]
end;

Stevie 24. Mai 2012 12:00

AW: Typen, Records einer Klasse vererben ?
 
Zitat:

Zitat von Nic2012 (Beitrag 1167906)
Als Workaround muss ich nun zusatzlich zur Unit mit der abgel. Klasse noch die Unit der Basisklasse hinzufügen.

Musst du doch sowieso. Wie willst du sonst von der Basisklasse erben? :gruebel:

silver-moon-2000 24. Mai 2012 12:08

AW: Typen, Records einer Klasse vererben ?
 
Zitat:

Zitat von Stevie (Beitrag 1167917)
Zitat:

Zitat von Nic2012 (Beitrag 1167906)
Als Workaround muss ich nun zusatzlich zur Unit mit der abgel. Klasse noch die Unit der Basisklasse hinzufügen.

Musst du doch sowieso. Wie willst du sonst von der Basisklasse erben? :gruebel:

Ich denke, er meint, dass er in anderen Units, in denen er nur die abgeleitete Klasse verwendet, auch die Basisklasse in die Uses mit aufnehmen muss

Stevie 24. Mai 2012 12:13

AW: Typen, Records einer Klasse vererben ?
 
Zitat:

Zitat von silver-moon-2000 (Beitrag 1167921)
Zitat:

Zitat von Stevie (Beitrag 1167917)
Zitat:

Zitat von Nic2012 (Beitrag 1167906)
Als Workaround muss ich nun zusatzlich zur Unit mit der abgel. Klasse noch die Unit der Basisklasse hinzufügen.

Musst du doch sowieso. Wie willst du sonst von der Basisklasse erben? :gruebel:

Ich denke, er meint, dass er in anderen Units, in denen er nur die abgeleitete Klasse verwendet, auch die Basisklasse in die Uses mit aufnehmen muss

In diesem Falle stimmt das. Bessere Möglichkeit wäre, die Record Definition in eine eigene Unit auszulagern.

Nic2012 24. Mai 2012 12:26

AW: Typen, Records einer Klasse vererben ?
 
Der Record ist als Typ in der Basisklasse deklariert und wird u.a. als Ruckgabewert einer Funktion (A) innerhalb der Basisklasse benutzt. In meiner Anwendung benutze ich aber nur noch die abgeleitete Klasse. In der Anw.-Implementation möchte ich aber die Funktion(A) benutzen, kann ich aber keine Variable von diesem Record-Typen solange deklarieren, bis ich wieder die Unit mit der Basisklasse und dem Record-Typen hinzufüge.

Den Typen in eine eigne Unit zu verschieben, habe ich auch schon gedacht. Aber ich sehe diesen Record-Typ nur im Kontext der Basisklassen und deren Ableitungen.

shmia 24. Mai 2012 12:37

AW: Typen, Records einer Klasse vererben ?
 
Wo ist das Problem?
Delphi-Quellcode:
unit BasisKlasse;

type
  TMeinRecord = record
    ...
  end;

  TBasisKlasse = class(...)

  end;
Der Record ist für jeden sichtbar, der die Unit BasisKlasse einbindet.

himitsu 24. Mai 2012 12:41

AW: Typen, Records einer Klasse vererben ?
 
Delphi-Quellcode:
unit BasisKlasse;

type
  TBasisKlasse = class(...)
  private type
    TMeinRecord = record
    end;
  private
    FMeinRecord: TMeinRecord;
  public
    ...
  end;
Oder
Delphi-Quellcode:
protected
statt
Delphi-Quellcode:
private
, bzw.
Delphi-Quellcode:
strict protected
oder gar
Delphi-Quellcode:
strict private
.


Man braucht nur mindestens ein Delphi 2006 / TDE

Nic2012 24. Mai 2012 13:04

AW: Typen, Records einer Klasse vererben ?
 
@shmia
Genauso habe ich es in der Basisklasse gemacht, der Compiler kennt in der 3.Unit wo ich Anwendung implementiere und nur die Unit der Ableitung einbinde, den Record-Typen aber nicht.

@himitsu
Habe nur D7 pro

himitsu 24. Mai 2012 13:09

AW: Typen, Records einer Klasse vererben ?
 
*dealer-blick-aufsetz-und-mantel-aufmach*
http://www.delphipraxis.net/144997-s...hi-2006-a.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 Uhr.
Seite 1 von 2  1 2      

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