Galkov писал(а):
нам понять трудно, оказываетсяНу и загадочно же ты пишешь, лучше бы разъяснил подробнее, или дал ссылку где почитать
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Galkov писал(а): нам понять трудно, оказываетсяНу и загадочно же ты пишешь, лучше бы разъяснил подробнее, или дал ссылку где почитать |
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Почитать - Kol.pas, естественно
|
|||
карма: 9 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
чего там разьяснять? наследуемся от TStream, перекрываем все методы, и клепаем конструктор: NewMemoryStream(name) - причем если name еще не существует, то создается новый блок. Создавать, убивать, читать и писать вроде научились уже...
------------ Дoбавленo: если точнее, то всего лишь нужно прописать свою структурку TStreamMethods и все делов-то. Больше времени на форуме обсуждали это все... |
|||
карма: 27 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Возрадуйся, nesco, можно не достигать "лучшего понимания происходящего"
Оказывается Кладов предусмотрел и такой вариант Kol.pas писал(а): function NewExMemoryStream( ExistingMem: Pointer; Size: DWORD ): PStream;
{* Creates memory stream on base of existing memory. It is not possible to write out of top bound given by Size (i.e. memory can not be resized, or reallocated. When stream object is destroyed this memory is not freed. } |
|||
карма: 9 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Galkov, ну и как с этим зверем работать
У него за памятью еще и следить надо, и чем оно лучше FileMap'a |
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
глядя на одни только параметры можно одназначно понять, как с этим работать... Хотя я все же считаю корректнее определить свои поля в TStreamMethods и сделать свой комнструктор, передающий эту структуру наружу, поскольку NewExMemoryStream это урезаный способ для самых ленивых.
|
|||
карма: 27 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
А не проще ли свой конструктор написать, чисто на своих методах
|
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Dilma писал(а): Хотя я все же считаю корректнее определить свои поля в TStreamMethods и сделать свой конструктор, передающий эту структуру наружу, поскольку NewExMemoryStream это урезанный способ для самых ленивых.А вот только заменитель (WriteExMemoryStream) находится только в implementation. +доступ к protected-полям. Приспичит если вдруг сделать новый маппинг - ну так под новый маппинг, и новый стрим.... |
|||
карма: 9 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
А читать то как из созданного по NewExMemoryStream стрима, он же доступен только на запись. Вот где здесь пристегнут метод для чтения, ну не пойму я
|
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
А ты попробуй прочитать, глядишь и получится
|
|||
карма: 9 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Попробовал, нифига не получилось, глянь, что я не так сделал
|
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Глянул
Делаю вывод: СТЫД и ПОЗОР И вот только не надо обижаться, что типа тебя как мальчика.... Хочешь быть взрослым - ТАК БУДЬ ИМ Позицию в стриме кто за тебя устанавливать будет, интересно - как ребенок, честное слово |
|||
карма: 9 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Galkov писал(а): СТЫД и ПОЗОРGalkov писал(а): Позицию в стриме кто за тебя устанавливать будетДа, точно, каюсь, забыл про этот момент ------------ Дoбавленo: Поставил, заработало. Вот, что получилось, ну что-то не совсем быстро работает, может сказывается глюченый комп, черт его знает
Какие будут выводы |
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): Какие будут выводыВыводы такие: две строки Strm.Position := 0; - ты поставил правильно |
|||
карма: 9 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
А дальнейшая концепция как, остановимся на NewExMemoryStream, или что-то будем думать дальше
|
|||
карма: 22 |
|