![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Опять TStream -
eSKey © (2002-05-17 12:53:00)Напомню, у меня такой метод, и в нем выполняется такие строки:
//iStream - внутренняя переменная треда типа TStream
constructor Create
(inStream:TStream; outStream:TStream);
...
iStream:=TStream.Create;
iStream.CopyFrom(inStream,HPos);
Тако вот, как видите он принимает как параметры 2 потока - вх. и выходной. Когда я передаю в качестве inStream поток ТМемориСтрим - все ОК, а вот когда ТФайлСтрим - на последней строчке эксепшн EAbstractException с сообщением "Abstract Error"... Бред какой-то, помогла замена типа iStream на ТМемориСтрим, но вопрос остался - какого чёрта? Я понимаю, в ТСтрим метод CopyFrom абстрактный, но ведь он есть и в Мемористрим, и в Файлстрим! Разъясните плиз, в чем дело?
MBo (2002-05-17 13:29:00) [1]ну так замени на tmemorystream , как уже делал
eSKey (2002-05-17 13:24:00) [2]Ну а как тогда делать правильно?
MBo (2002-05-17 13:10:00) [3]iStream:=TStream.Create;
таким способом ведь создается объект с абстрактными методами, чего тогда удивляться
Song 12:55 прав
Игорь Шевченко (2002-05-17 13:05:00) [4]
iStream:=TStream.Create;
iStream.CopyFrom(inStream,HPos);
Что делает CopyFrom? (он не абстрактный):
....
WriteBuffer (...)
....
Что делает WriteBuffer (он не абстрактный):
вызывает Write
смотрим объявление метода Write в TStream:
function Write(const Buffer; Count: Longint): Longint; virtual; abstract;
Получили, что ожидали.
С уважением,
P.S. Любите отладчик - источник знаний.
Song (2002-05-17 12:58:00) [5]Извиняюсь, до конца вопрос не догрузился. Только сейчас увмдел суть.
Song (2002-05-17 12:55:00) [6]Сколько можно говорить что TSream это абстрактный класс для создания наследников. Вся функциональность класс заключается в TFileStream и TMemoryStream