Вниз
Скачать: 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.017 c
1-29338
Met
2004-01-29 13:58
2004.02.10
Поиск в нетипизированном файле


1-29462
Shaman
2004-01-30 15:24
2004.02.10
Как программно создать кнопку и разместить ее на форме


9-29185
Gandalv
2003-07-26 11:17
2004.02.10
Лучший формат


8-29473
sid!
2003-10-10 20:40
2004.02.10
Куб с гранями-событиями!


1-29420
Boroda Oleg
2004-01-31 11:09
2004.02.10
Господа, как отлавливать события изменения значений в таблице?




   Наверх