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

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



Память: 0.46 MB
Время: 0.016 c
11-29289
Кладов
2003-05-28 22:44
2004.02.10
Поведение модальности


7-29648
Владимир Березин
2003-11-24 20:16
2004.02.10
Адресация локальной переменной в asm


1-29343
dmk
2004-02-01 17:04
2004.02.10
Callback для метода класса. Реально?


1-29390
Lisa
2004-02-01 16:11
2004.02.10
AutoSelect для TMemo


1-29314
elected
2004-01-30 00:09
2004.02.10
Как сделать виртуальный файл.




   Наверх