Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-36228
Cranium
2002-12-01 21:02
2002.12.12
Нужен компонент типа RechEdit, но


14-36416
Lamer86
2002-11-22 18:01
2002.12.12
Я возмущён такой несправедливостью


1-36087
idz
2002-12-02 21:59
2002.12.12
Подпись оси Y в графике (компонент TChart)


4-36460
@Ujin
2002-10-30 12:17
2002.12.12
Как грамотно засунуть форму в dll?


6-36314
Andrew2
2002-10-17 13:46
2002.12.12
ICQ