Вниз
Скачать: CL | DM;

Вопрос про ООП   Найти похожие ветки 

 
Dmitry S ©   (2008-02-11 05:48) [0]

Конструктивно:
Есть класс TStream.
У него есть куча потомков, например, TMemoryStream и TFileStream;

Как мне в TStream добавить несколько дополнительных методов так, чтобы они появились и у TMemoryStream и TFileStream?

Естественно без перекомпиляции генофонда:)


 
iZEN   (2008-02-11 05:52) [1]

Никак.


 
MBo ©   (2008-02-11 06:36) [2]

кое-что можно в BDS сделать с помощью class helpers


 
Slym ©   (2008-02-11 06:54) [3]

Dmitry S ©   (11.02.08 5:48)
делай класс Реадер/Врайтер
TStreamExtensions=class(TStream)
private
 FStream:TStream;
public
 function ReadLn:string;
 constructor Create(Stream:TStream);override;
 destructor Destroy;override;
end;

TStreamExtensions.Create(Stream:TStream);
begin
 inherited;
 FStream:=Stream;
end;
TStreamExtensions.Destroy;
begin
 FStream.Free;
 inherited;
end;

MyStream:=TStreamExtensions.Create(TMemoryStream.Create);
MyStream.ReadLn;
MyStream.Free;


 
Skier ©   (2008-02-11 11:08) [4]

>Dmitry S ©   (11.02.08 05:48)  
А можно узнать зачем?


 
Palladin ©   (2008-02-11 11:17) [5]


> [4] Skier ©   (11.02.08 11:08)

Иногда не хватает функционала для удобства у базового класса...


 
Marser ©   (2008-02-11 11:22) [6]


> Slym ©   (11.02.08 06:54) [3]
> Dmitry S ©   (11.02.08 5:48)делай класс Реадер/Врайтер

Ага, обёртку над стандартным классом, достаточно полезно бывает.
А врубиться за просто так в стандартные классы не выйдет, разве что вытянуть их полный код, переименовать и переделать по-своему - если уж делать, то так хоть безопасно.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.008 c
8-1176803790
ZMRaven
2007-04-17 13:56
2008.03.23
DSPack захват видео и одновременное воспроизведение.


2-1203442928
Mk30
2008-02-19 20:42
2008.03.23
Как в label.caption записать логическое имя установленной флешки?


15-1202895646
@!!ex
2008-02-13 12:40
2008.03.23
Программа для снятия скриншотов


2-1203800509
antonn
2008-02-24 00:01
2008.03.23
Глупый вопрос по Application.ProcessMessages;


11-1186432080
Kirill
2007-08-07 00:28
2008.03.23
DecodeDate




   Наверх