Текущий архив: 2002.12.12;
Скачать: CL | DM;
Вниз
Файлы в оперативку Найти похожие ветки
← →
Valt (2002-10-10 14:09) [0]Уважаемые мастаки,
подскажите, можно ли каким-либо образом загрузить файл в оператику, и работать с ним как с обыкновенным файлом?
Мне это нужно для экономии времени, а то на жесткий он будет долго обращаться.
← →
still © (2002-10-10 14:15) [1]посмотри разные stream"ы - типа TFileStream, TMemoryStream and so on
← →
MBo © (2002-10-10 14:15) [2]загрузить в оперативку можно, прочитав файл в буфер, да хоть в MemoryStream
Кроме того, Memory-Mapped Files полезны.
← →
still © (2002-10-10 14:20) [3]
> Memory-Mapped Files
то, что они полезны - спору нетю вот только на мой взгляд не для этих целей оно сделано. Еще Дейкстра говорил, что-то типа "я не люблю, когда из пушки стреляют по воробьям, независимо от того, насколько эффективно пушка с этим справляется". с цитатой могу наврать, но смысл такой
← →
Valt (2002-10-10 14:20) [4]А работать с этими Stream"ми также как с файлами? Дело в том, что я использую TIniFiles, а у них довольно специфические операции. Что такое Memory-Mapped Files и с чем их есть?
← →
still © (2002-10-10 14:27) [5]
> Valt (10.10.02 14:20)
ну почитай уже хелп :)
будет конкретный вопрос, непонятное чего - обращайся
← →
Valt (2002-10-10 14:33) [6]Help я посмотрел и насколько понял TFileStream умеет только читать и записывать в файл, т.е. с TIniFiles работать не получится. Конретный вопрос: Я прав?
А все-таки что-такое memory-mapped files?
← →
still © (2002-10-10 14:41) [7]memory-mapped files - механизм взаимодействия процессов. Это в разделе Interprocess communications, там же где shared memory and so on.
Смысл такой - в памяти выделяется кусок, которому получают доступ несколько процессов. Они работают с ним как с файлом.
← →
Valt (2002-10-10 14:52) [8]Спасибо большое.
Я кажется уже надоел, но все-таки как насчет Inifiles, с ними действительно нельзя работать из TFileStream?
← →
still © (2002-10-10 15:00) [9]я бы сделал своего потомка TIniFile, который бы весь файл в память засасывал.
← →
gek © (2002-10-10 15:01) [10]var
s:tfilestream;
begin
s:=tfilestream.Create("c:\kuku.ini",fmopenread);
s.Free;
← →
kerk (2002-10-10 15:02) [11]Загружай ини файл в и TStringList, используй Values, Names, а когда хочешь сохранить в файл - SaveToFile.
Best regards.
← →
han_malign © (2002-10-10 15:02) [12]TMemIniFile - полностью загружает инишник в память и пишет его на диск по UpdateFile
← →
still © (2002-10-10 15:08) [13]
> kerk (10.10.02 15:02)
это не прокатит, потому что в ини-файле в разных секциях могут быть одинаковые ключи, а в стринг-листе понятия секции нет
← →
Valt (2002-10-10 15:09) [14]Народ, всем согромное спасибо. han_malign, TMemIniFile это по-моему то, что нужно.
Still, а как бы ты это реализовал, то есть как засасывать файл в память?
← →
still © (2002-10-10 15:18) [15]
> Valt (10.10.02 15:09)
щас с ходу не скажу. а вообще знаешь такой анекдот: мое дело - концепция:)
← →
Valt (2002-10-10 15:25) [16]Вообщем еще раз всем спасибо, а особливо Still"у и han_malign"у.
Успехов!
← →
Suntechnic © (2002-10-11 00:26) [17]still © (10.10.02 14:20)
> Memory-Mapped Files
то, что они полезны - спору нетю вот только на мой взгляд не для этих целей оно сделано. Еще Дейкстра говорил, что-то типа "я не люблю, когда из пушки стреляют по воробьям, независимо от того, насколько эффективно пушка с этим справляется". с цитатой могу наврать, но смысл такой
Ну это вы зря так... про пушек и воробьёв пример конечно хороший, только файлы проецируемые в память применяются не только для межпроцессорного взаимодействия. И Mbo был абсолютно прав упоминаю эту возможность. Предствьте себе, например, ситуацию, что вам необходимо обрабатывать файл размером 1-2 GB. О каких MemoryStream или VirtualMemory можно вести речь? Да ни о каких... максимальный объём памяти, которую могут выделить эти ф-ции, в высшей степени зависит от настроек системы, а вам, скажем надо гарантированно именно такой размер... можно конечно и самому организовать чтение/запсиь через буфер, но как один из вариантов вполне пойдёт использование File Mapping. И межпроцессорное взаимодействие тут, как видите, абсолютно ни при чём.
Страницы: 1 вся ветка
Текущий архив: 2002.12.12;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.02 c