Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Wie TStream überschreiben? (https://www.delphipraxis.net/154466-wie-tstream-ueberschreiben.html)

marcos 11. Sep 2010 20:42

Delphi-Version: 2010

Wie TStream überschreiben?
 
Hallo,

ich möchte gerne in der Klasse TStream eine neue Methode definieren CopyFromProgress.
An sich ist das kein Problem
Delphi-Quellcode:
TMyStream = class(TStream)
   public
     function CopyFromProgress(...): int64;
end;
Ich möchte aber, dass die neue Methode auch in allen anderen abgeleiteten Klassen (TFileStream, TMemoryStream) sichtbar ist.

Kann ich so was erreichen ohne direkt die classes.pas ändern zu müssen?

Gruß
marcos

Namenloser 11. Sep 2010 20:44

AW: Wie TStream überschreiben?
 
Das ist eigentlich genau der Zweck, für den class helpers eingeführt wurden:
Delphi-Quellcode:
TStreamHelper = class helper for TStream
public
  function CopyFromProgress(...): int64;
end;

himitsu 11. Sep 2010 20:46

AW: Wie TStream überschreiben?
 
Das geht nicht, es sei denn du machst das bei jeder einzelnen Klasse.

Aber ab Delphi 2006 / Turbo Delphi könnte man via Class-Helper den TStream mit sowas "erweitern".

[edit]
genau so (wäre schön gewesen, wenn mir diese blöde RedBox endlich mal bei sowas Bescheid gibt)

marcos 11. Sep 2010 21:02

AW: Wie TStream überschreiben?
 
Danke für die schnellen Antworten.
Helper-Class klingt schon sehr gut. Könnte man das irgendwie dynamisch nutzen:

- Klasse mit Helper-Class erweitern
- notwendige Aktionen machen
- die Klasse wiederherstellen (Helper-Class Erweiterung entfernen)

marcos

jfheins 11. Sep 2010 21:12

AW: Wie TStream überschreiben?
 
Zitat:

Zitat von marcos (Beitrag 1048965)
Danke für die schnellen Antworten.
Helper-Class klingt schon sehr gut. Könnte man das irgendwie dynamisch nutzen:

- Klasse mit Helper-Class erweitern
- notwendige Aktionen machen
- die Klasse wiederherstellen (Helper-Class Erweiterung entfernen)

marcos

???

Hast du class Helper verstanden?
Sie erweitern den Code - zur Laufzeit kann daran nichts verändert werden!

marcos 11. Sep 2010 21:20

AW: Wie TStream überschreiben?
 
Ich glaube ich habe sie richtig verstanden und daher meine Frage. Ich dachte, dass ich vielleicht was übersehen habe :).

Danke
marcos

jaenicke 11. Sep 2010 21:52

AW: Wie TStream überschreiben?
 
An den Klassen wird dabei nichts verändert. Deshalb kannst du auch keine Felder oder so darin deklarieren, sondern nur auf vorhandenes zugreifen was das Ablegen von Daten angeht.
Deshalb gibt es aber auch nichts rückgängig zu machen.

Du hast bei diesen Klassen einfach nur die Möglichkeit eine zusätzliche Methode einfach aufzurufen als wäre sie in der Klasse definiert statt diese extern zu deklarieren und zu verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 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