![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файлы в оперативку
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 полезны.