Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
11-29286
EAccessViolation
2003-05-29 16:02
2004.02.10
OnActivate (OnFocused) Form


14-29586
copyr25
2004-01-10 16:53
2004.02.10
---|Ветка была без названия|---


1-29469
XfroSt
2004-01-30 13:38
2004.02.10
Сохранение части реестра в файл


7-29626
Babay
2003-11-25 10:32
2004.02.10
Список служб W2K, XP


3-29229
andrew-21
2004-01-19 20:20
2004.02.10
БД без Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский