AGB  ·  Datenschutz  ·  Impressum  







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

Privat deklarierte Klasse ableiten

Ein Thema von Delbor · begonnen am 17. Nov 2017 · letzter Beitrag vom 20. Nov 2017
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Privat deklarierte Klasse ableiten

  Alt 17. Nov 2017, 14:39
...dass in einer abgeleiteten Komponente/Klasse Member ohne explizite Typangabe aufgeführt werden können...
Darunter kann ich mir nichts vorstellen?!
Was willst du machen?
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.196 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Privat deklarierte Klasse ableiten

  Alt 17. Nov 2017, 14:57
Hi TiGü

Na, zum Bleistift statt:

FPoint : TPoint;

nur:

FPoint;

Ich glaube mich zu erinnern, dass dies bei Erhöhen derSichtbarkeit der Fall ist. Aber sicher bin ich mir eben nicht. Und Embarcareo scheint sich immer noch im Nirwana aufzuhalten..

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.915 Beiträge
 
Delphi 12 Athens
 
#3

AW: Privat deklarierte Klasse ableiten

  Alt 17. Nov 2017, 15:15
Das geht nur bei Properties.
Hast Du diese in einer Klasse protected deklariert:
Delphi-Quellcode:
TFoo = class
private
  fInfo: string;
protected
  property info read finfo write finfo;
end;
Willst du nun in der abgeleiteten Klasse Bar info published machen, ist das so möglich:
Delphi-Quellcode:
TBar = class(Too)
published
  property info;
end;
Die Sichtbarkeit von private deklarierten Properties kannst Du aber nicht erhöhen.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP

Geändert von TBx (17. Nov 2017 um 15:22 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.196 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Privat deklarierte Klasse ableiten

  Alt 17. Nov 2017, 15:57
Hi TBx

Vielen Dank!

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.241 Beiträge
 
Delphi 12 Athens
 
#5

AW: Privat deklarierte Klasse ableiten

  Alt 18. Nov 2017, 07:00
Das geht dann vieleicht in den Bereich "nasty hack"

Würde ich nur ein extremen Ausnahmefällen machen und gut Unit-Testen und dokumentieren.

Rollo
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.196 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Privat deklarierte Klasse ableiten

  Alt 18. Nov 2017, 10:21
Hi Rollo

Da mein Englisch sehr schlecht ist, hab ich mir die Beiträge unter deinem Link mal von Google übersetzen lassen. Inzwischen kommen mit dem Ding ja tatsächlich verständliche und nachvollziehbare Übersetzungen zustande.

Wenn ich das jetzt richtig verstanden habe, besteht das Problem darin:
Sollte sich die Deklarationsstruktur des TPDFiumFrame bei einem Update des Frames ändern und auch nur ein privates Feld dazukommen, verschiebt das die ganzen nachfolgenden Deklarationen nicht nur im Quelltext-Editor nach unten, sondern sie erhalten auch eine neue Speicheradresse.

Ich seh hier allerdings in diesem Fall kein Problem. Denn wenn es mal ein Update des TPDFiumFrames geben sollte und ich dieses einbauen will, muss ich auch meine Klasse neu einfügen und neu compilieren, wodurch sich das Problem 'voon selbst' erledigen sollte.

Meine Deklaration (wobei ich gerade sehe, dass sie Falsch ist - ich beabsichtige nicht, irgendwas zu veränder oder irgendwelche Methoden zu überschreiben. Ich benötige lediglich in meiner Mainform eine Klassenvariable, die mit TPDFiumFrame.TPDFPage kompatibel ist :
Delphi-Quellcode:
  public
    { Déclarations publiques }
    type
      TPDFCustomDocumentPage = class(TPDFPage)
// Index : Integer;
// Handle : HPDFPage;
// Top : Double;
// Rect : TRect;
// Text : HPDFTextPage;
// NoText : Boolean;
// Visible : Integer;
// SelStart : Integer;
// SelStop : Integer;
// Selection: TArray<TRectD>;
// destructor Destroy; override;
// function HasText: Boolean;
// function CharIndex(x, y, distance: Integer): Integer;
// function CharCount: Integer;
// function Select(Start: Integer): Boolean;
// function SelectTo(Stop: Integer): Boolean;
// function ClearSelection: Boolean;
// procedure DrawSelection(DC, BMP: HDC; const Blend: TBlendFunction; const Client: TRect);
      end;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

Den ganzen hier auskommentierten Teil kann ich weglassen. War wohl schon etwas spät gestern abend...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.915 Beiträge
 
Delphi 12 Athens
 
#7

AW: Privat deklarierte Klasse ableiten

  Alt 18. Nov 2017, 11:01
Irgendwie komme ich noch nicht so ganz dahinter, was Du eigentlich vorhast.
Willst Du eine private Typdeklaration ableiten, also sowas:
Delphi-Quellcode:
TFoo = class
private
  type
   TMaker = class
     procedure bulb;
  end;
end;
Dann wird sowas nicht funktionieren:
Delphi-Quellcode:
TBar = class(Too)
public
  type
   TMyMaker = class(TMaker)
  end;
end;
Hast Du hingegen sowas:
Delphi-Quellcode:
TFoo = class
private
  TopSecret: Object;
end;
kannst Du Dir über einen class Helper helfen:
Delphi-Quellcode:
TFooHelper = class helper for TFoo
  function getTopSecret: TObject;
end;

function TFooHelper.getTopSecret: TObject;
begin
  Result := self.TopSecret;
end;
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  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 23:30 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