Есть ли такой TStream ?

Alex S
Дата: 09.07.2009 17:25:45
Есть ли где-нибудь пример такого потока, который сначала в память пишет как TMemoryStream, а при достижении указанного объема начинает сбрасывать блоки ("дальние" от position) в указанный файл. Ну и читать с диска в память при приближении position к блоку, который сейчас на диске.
Может уже есть, или свой писать?

Как кратко сформулировать поиск гуглу - не соображу.
misha mike
Дата: 09.07.2009 17:43:49
Да там и писать особо нечего, страничный доступ к файлу, логика прямолинейная, строчек в 200 можно уложиться.
Альт
Дата: 09.07.2009 17:57:45
Alex S, называется это "отображением файла"... ищите в гугле реализации по ключевым словам:
Delphi TStream Mapped File
zirra
Дата: 09.07.2009 17:59:47

On Thu, 09 Jul 2009 18:57:45 +0400, Альт <nospam@sql.ru> wrote:

> Автор: Альт
> Delphi TStream Mapped File

Дык, тут уже неоднократно и про TMappedMemoryStream говорили...

Posted via ActualForum NNTP Server 1.4

Альт
Дата: 10.07.2009 09:16:32
zirra, гугль выдает ссылку на
http://www.atstariff.com/fibscript/
это простой читатель... если я правильно понимаю суть вот этой реализации:
+
function TMappedMemoryStream.Write;
begin
  Result := fPosition;
end;

ну уж никак не писатель... фиксы у Вас на странице в разделе YAScript этой проблемы тоже не решают.
Возможно я не прав... т.к. поглядел на код вскользь.
zirra
Дата: 10.07.2009 12:55:41

On Fri, 10 Jul 2009 10:16:32 +0400, Альт <nospam@sql.ru> wrote:

> Автор: Альт
> zirra, гугль выдает ссылку на
> http://www.atstariff.com/fibscript/
> это простой читатель... если я правильно понимаю суть вот этой ну уж
> никак не писатель...

Да... Чтой-то я действительно запамятовал об этом...
Мне тогда (да и сейчас) только чтение и надоть было...
Картинка с другого сайта.

> фиксы у Вас на странице в разделе YAScript этой
> проблемы тоже не решают.

Не, "фиксы" - это у Николая...
А у меня - "оригинал", переделанный из простейшей обёртки Сергея
Кабикова (писАл давненько такой товарищ в RU.DELPHI)...
Картинка с другого сайта.

> Возможно я не прав... т.к. поглядел на код вскользь.

Не прав только в одном: чего это вдруг на "Вы" перешёл?..
Картинка с другого сайта.

Posted via ActualForum NNTP Server 1.4

Dmitry Arefiev
Дата: 10.07.2009 13:04:08
В AnyDAC есть TADFileStream, который реализует буферизованные чтение и запись.
Я его присоединил. Там ADMove - Move, PADByteString - PAnsiChar.
Alex S
Дата: 10.07.2009 15:45:33
Спасибо за ответы! Получается в основном все варианты, как бы "с другой стороны": изначально есть файл, который кусками "проецируется" в память либо кусками читается/пишется из буфера. Мне представлялось, что должен быть TMemoryStream, который при увеличении, скажем до 200Мб больше не растет, а создает файл где нибудь в \temp и скидывает в него (по FIFO, если рассматривать последовательную запись в поток) данные. Файл "подкачки"
Хотя, если подумать, это почти одно и то-же. Различие только в моменте создания файла и в динамическом размере буфера в моем варианте. Буду пробовать на примере TADFileStream организовать. Спасибо!
zirra
Дата: 10.07.2009 15:51:46

On Fri, 10 Jul 2009 16:45:33 +0400, Alex S <nospam@sql.ru> wrote:

> Автор: Alex S
> Спасибо за ответы! Получается в основном все варианты, как бы "с другой
> стороны":

Ты вообще скажи конкретно:
тебе ЧИТАТЬ надо?.. Или таки и ПИСАТЬ туда ещё?..
Если первое, то вполне хватит и вышеприведённой ссылки на
TMemoryMappedStream...
Писать - придётся извращаться...

Posted via ActualForum NNTP Server 1.4

Petro123
Дата: 10.07.2009 20:26:32
Alex S,

AFAIK 400 мегов писал в оле стрим. Было достаточно быстро.