![]() |
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:
Ich möchte aber, dass die neue Methode auch in allen anderen abgeleiteten Klassen (TFileStream, TMemoryStream) sichtbar ist.
TMyStream = class(TStream)
public function CopyFromProgress(...): int64; end; Kann ich so was erreichen ohne direkt die classes.pas ändern zu müssen? Gruß marcos |
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; |
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) |
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 |
AW: Wie TStream überschreiben?
Zitat:
Hast du class Helper verstanden? Sie erweitern den Code - zur Laufzeit kann daran nichts verändert werden! |
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 |
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