Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.011 c
1-36164
VJar
2002-12-03 23:53
2002.12.12
Установка иконок проекта


3-36066
oss
2002-11-25 18:23
2002.12.12
oracle9i, создание пользователей.


8-36306
LexusU
2002-08-28 18:30
2002.12.12
DivX при проигрывании avi файла


1-36232
Vcoder
2002-12-01 16:51
2002.12.12
TStream.WriteComponent


7-36447
PC_Maniac
2002-10-10 00:38
2002.12.12
Как подключить 16-битную dll к 32 разрядному приложению?




   Наверх