Форум: "Прочее";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];
ВнизВопрос про ООП Найти похожие ветки
← →
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 вся ветка
Форум: "Прочее";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c