Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Файлы в оперативку


Valt ©   (2002-10-10 14:09:00) 

Уважаемые мастаки,
подскажите, можно ли каким-либо образом загрузить файл в оператику, и работать с ним как с обыкновенным файлом?
Мне это нужно для экономии времени, а то на жесткий он будет долго обращаться.


Suntechnic   (2002-10-11 00:26:00) [1]

still © (10.10.02 14:20)

> Memory-Mapped Files

то, что они полезны - спору нетю вот только на мой взгляд не для этих целей оно сделано. Еще Дейкстра говорил, что-то типа "я не люблю, когда из пушки стреляют по воробьям, независимо от того, насколько эффективно пушка с этим справляется". с цитатой могу наврать, но смысл такой


Ну это вы зря так... про пушек и воробьёв пример конечно хороший, только файлы проецируемые в память применяются не только для межпроцессорного взаимодействия. И Mbo был абсолютно прав упоминаю эту возможность. Предствьте себе, например, ситуацию, что вам необходимо обрабатывать файл размером 1-2 GB. О каких MemoryStream или VirtualMemory можно вести речь? Да ни о каких... максимальный объём памяти, которую могут выделить эти ф-ции, в высшей степени зависит от настроек системы, а вам, скажем надо гарантированно именно такой размер... можно конечно и самому организовать чтение/запсиь через буфер, но как один из вариантов вполне пойдёт использование File Mapping. И межпроцессорное взаимодействие тут, как видите, абсолютно ни при чём.


Valt   (2002-10-10 15:25:00) [2]

Вообщем еще раз всем спасибо, а особливо Still"у и han_malign"у.
Успехов!


still   (2002-10-10 15:18:00) [3]


> Valt (10.10.02 15:09)

щас с ходу не скажу. а вообще знаешь такой анекдот: мое дело - концепция:)


Valt   (2002-10-10 15:09:00) [4]

Народ, всем согромное спасибо. han_malign, TMemIniFile это по-моему то, что нужно.
Still, а как бы ты это реализовал, то есть как засасывать файл в память?


still   (2002-10-10 15:08:00) [5]


> kerk (10.10.02 15:02)

это не прокатит, потому что в ини-файле в разных секциях могут быть одинаковые ключи, а в стринг-листе понятия секции нет


han_malign   (2002-10-10 15:02:00) [6]

TMemIniFile - полностью загружает инишник в память и пишет его на диск по UpdateFile


kerk   (2002-10-10 15:02:00) [7]

Загружай ини файл в и TStringList, используй Values, Names, а когда хочешь сохранить в файл - SaveToFile.

Best regards.


gek   (2002-10-10 15:01:00) [8]

var
s:tfilestream;
begin
s:=tfilestream.Create("c:\kuku.ini",fmopenread);
s.Free;


still   (2002-10-10 15:00:00) [9]

я бы сделал своего потомка TIniFile, который бы весь файл в память засасывал.


Valt   (2002-10-10 14:52:00) [10]

Спасибо большое.
Я кажется уже надоел, но все-таки как насчет Inifiles, с ними действительно нельзя работать из TFileStream?


still   (2002-10-10 14:41:00) [11]

memory-mapped files - механизм взаимодействия процессов. Это в разделе Interprocess communications, там же где shared memory and so on.
Смысл такой - в памяти выделяется кусок, которому получают доступ несколько процессов. Они работают с ним как с файлом.


Valt   (2002-10-10 14:33:00) [12]

Help я посмотрел и насколько понял TFileStream умеет только читать и записывать в файл, т.е. с TIniFiles работать не получится. Конретный вопрос: Я прав?
А все-таки что-такое memory-mapped files?


still   (2002-10-10 14:27:00) [13]


> Valt (10.10.02 14:20)

ну почитай уже хелп :)
будет конкретный вопрос, непонятное чего - обращайся


Valt   (2002-10-10 14:20:00) [14]

А работать с этими Stream"ми также как с файлами? Дело в том, что я использую TIniFiles, а у них довольно специфические операции. Что такое Memory-Mapped Files и с чем их есть?


still   (2002-10-10 14:20:00) [15]


> Memory-Mapped Files

то, что они полезны - спору нетю вот только на мой взгляд не для этих целей оно сделано. Еще Дейкстра говорил, что-то типа "я не люблю, когда из пушки стреляют по воробьям, независимо от того, насколько эффективно пушка с этим справляется". с цитатой могу наврать, но смысл такой


still   (2002-10-10 14:15:00) [16]

посмотри разные stream"ы - типа TFileStream, TMemoryStream and so on


MBo   (2002-10-10 14:15:00) [17]

загрузить в оперативку можно, прочитав файл в буфер, да хоть в MemoryStream
Кроме того, Memory-Mapped Files полезны.


Наверх

Титульная страница Поиск, карта сайта Написать письмо