Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.10;
Скачать: CL | DM;

Вниз

Как сделать виртуальный файл.   Найти похожие ветки 

 
elected ©   (2004-01-30 00:09) [0]

Господа Мастера! Именно Мастреа! (Зотов и другие)
Прошу помощи!!!
Есть Blob в базе данных в нем лежат файлы разных форматов..
Для того чтобы открыть каждый из них мне приходиться записывать blob в поток потом в файл на диск а потом уже открывать его..
Вопрос Как открыть поток не записывая его на диск?
ну или хотябы как сделать так чтобы файл находился только в памяти а к нему уже обращалось приложение?

Пожалуйста помогите и желательно вразумительно с примерами...
Заранее благодарен!


 
Rouse_ ©   (2004-01-30 00:17) [1]

CreateFileMapping ?


 
elected ©   (2004-01-30 00:21) [2]

Я слышал что-то про CreateFileMapping
но вот как это работает ума не приложу
Да и можно ли с помощью этого решить данную проблему ...=-(
Может пример есть ?


 
y-soft ©   (2004-01-30 08:02) [3]

Хмм... Ваш вопрос не имеет универсального ответа

Тут важно, с какими форматами файлов предполагается работать и что с ними надо делать

Суть в том, что при открытии файла система не просто перезаписывает его из диска в память, а еще и производит дополнительную работу. Т.е. при прямой записи в память Вам придется делать эту работу за Windows

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

В некоторых случаях можно облегчить жизнь, записывая в BLOB вместо дискового файла его образ в памяти (но только в некоторых!)

Еще для сокращения накладных расходов можно сохранять в файл, но создавать его с флагом FILE_DELETE_ON_CLOSE и атрибутом FILE_ATTRIBUTE_TEMPORARY, тогда ОС постарается хранить его в памяти...


 
alex_*** ©   (2004-01-30 09:21) [4]

Если blob используется только внутри одного приложения то смысл сохранять в файл? blob.SaveToStream(MemSt) и пользуй этот стреам как хочешь внутри приложения. FileMapping имеет смысл применять когда ты хочешь чтоб этим блобом пользовались другие приложения.



Страницы: 1 вся ветка

Текущий архив: 2004.02.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
4-29662
Леприкон
2003-12-05 09:08
2004.02.10
Смена цвета окна


3-29247
Andriano
2004-01-19 09:30
2004.02.10
Динамичный DBComboBoxEh


1-29323
ncua
2004-01-29 21:22
2004.02.10
Подскажите пожайлусто как в runtime менять размеры контролов


3-29206
widoms
2004-01-21 07:21
2004.02.10
Пропадают записи в подчинённой таблице.


6-29516
Vlad Oshin
2003-12-09 12:10
2004.02.10
Сокеты. Тормозит приложение.