Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26164
Рейтинг: 2127
#16: 2010-03-22 13:41:54 ЛС | профиль | цитата
Assasin писал(а):
А почему бы вот так не сделать?

Не забываем про то, что каждый такой элемент потребляет память и не слабую, при длинных файлах
------------ Дoбавленo в 13.43:
GanjaKyp писал(а):
а нельзя ли изменить MemoryStream чтобы doCopy производилось с установленной позиции, а не с 0

Не зачем, когда, он и так копируется с позиции, которую ты установишь перед копированием, и читается точно так же
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#17: 2010-03-22 13:43:38 ЛС | профиль | цитата
nesco, я предлагаю решения на стандартных неизмененных элементах, а вот над их изменением работай ты Я их не делал - не мне их изменять
------------ Дoбавленo в 13.44:
nesco писал(а):
Не зачем, когда, он и так копируется с позиции, которую ты установишь перед копированием

Да?
#pas
procedure THIMemoryStream._work_doCopy;
var St:PStream;
begin
P.Size := 0;
St := ReadStream(_data,_data_SrcStream,nil);
if St <> nil then
begin
Stream2Stream(P,St,St.Size);
_hi_onEvent(_event_onCopy, p);
end;
end;
карма: 10
0
Разработчик
Ответов: 26164
Рейтинг: 2127
#18: 2010-03-22 13:45:01 ЛС | профиль | цитата
Assasin писал(а):
я предлагаю решения на стандартных неизмененных элементах, а вот над их изменением работай ты

А зачем что-то переделывать, когда все давно работает. Если ты про это не знаешь, это совсем не означает, что оно не работает
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#19: 2010-03-22 13:45:27 ЛС | профиль | цитата
Это тогда надо EventFromData ставить, на взятии потока, а это
nesco писал(а):
Не забываем про то, что каждый такой элемент потребляет память и не слабую, при длинных файлах


карма: 10
0
Разработчик
Ответов: 26164
Рейтинг: 2127
#20: 2010-03-22 13:45:30 ЛС | профиль | цитата
Assasin писал(а):
Да?

Покажи, где меняется позиция P

А вообще-то действительно. P.Size := 0, это нехорошо. Но, увы, ничего поделать уже нельзя, разве что добавить другой метод, типа -- CopyFromPosition
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#21: 2010-03-22 13:46:55 ЛС | профиль | цитата
А, ну да Позиция вообще нереальна в нулевом потоке
Зато я узнал, что не нужны doClear перед копированием, как раньше
------------ Дoбавленo в 13.47:
Ну тогда все-равно остается проблема добавления данных к существующим
карма: 10
0
Разработчик
Ответов: 26164
Рейтинг: 2127
#22: 2010-03-22 13:47:51 ЛС | профиль | цитата
Почитай выше, я написал уже, что можно сделать
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#23: 2010-03-22 13:49:42 ЛС | профиль | цитата
nesco писал(а):
добавить другой метод, типа -- CopyFromPosition

Угу, и продублировать код выше, только без изменения размера, это тоже нехорошо
карма: 10
0
Разработчик
Ответов: 26164
Рейтинг: 2127
#24: 2010-03-22 13:53:12 ЛС | профиль | цитата
Assasin писал(а):
только без изменения размера, это тоже нехорошо

Почему
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#25: 2010-03-22 13:54:37 ЛС | профиль | цитата
nesco писал(а):
Не забываем про то, что каждый такой элемент потребляет память и не слабую, при длинных файлах

только не элемент, а в данном случае метод
------------ Дoбавленo в 13.55:
Нет, наверное я что-то не понимаю в дубляже кода
карма: 10
0
Администрация
Ответов: 15295
Рейтинг: 1519
#26: 2010-03-22 13:56:12 ЛС | профиль | цитата
ничего добавлять никуда не нужно. Если нужно кусочное копирование потока используем элемент StreamCopy
карма: 27
0
Разработчик
Ответов: 26164
Рейтинг: 2127
#27: 2010-03-22 13:56:36 ЛС | профиль | цитата
Assasin писал(а):
Нет, наверное я что-то не понимаю в дубляже кода

Не пристегнутый метод не компилируется
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#28: 2010-03-22 13:57:52 ЛС | профиль | цитата
То есть как? А я думал, что при создании класса в память идут все его методы и переменные
карма: 10
0
Разработчик
Ответов: 26164
Рейтинг: 2127
#29: 2010-03-22 13:58:22 ЛС | профиль | цитата
Dilma писал(а):
ничего добавлять никуда не нужно

А мы и не собирались. Это так, размышления на тему
------------ Дoбавленo в 14.00:
Assasin писал(а):
А я думал, что при создании класса в память идут все его методы и переменные

Кодогенератор отсеивает нелинкованные методы
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#30: 2010-03-22 14:02:14 ЛС | профиль | цитата
Ну а если будут прилинкованы оба метода? Оба идут в память, а значит дубляж кода
карма: 10
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)