![]() |
|
![]() ![]() ![]() |
|
Ground |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 321 Регистрация: 27.2.2006 Где: Комсомольск Репутация: нет Всего: 1 |
Доброго времени суток!
Подскажите как правильно реализовать механизм отображения файла в память под Win32 на Qt 4.7. Гугление ничего толкового не дает, отсылает к методу map класса QFile. Но при такой реализации ничего не работает. Сам файл уже существует, его нужно только открыть, права к нему имеются - на чтение. С помощью WinAPI проверял - все работает, но в Qt с этим проблемы. Делаю вот так:
При таком коде open() возвращает false, файл не виден. file->exists() возвращает false. В чем может быть проблема? Возможно имеются какие-то особенности работы с такими файлами? Это сообщение отредактировал(а) Ground - 28.6.2011, 07:59 |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
при чём тут map совершенно не понятно... дай ему (QFile'у) полный путь к файлу. Если всё пройдёт, то проблема в том, что ты считаешь, что exe-шник запущен из одного каталога, а он (exe-шник) считает, что в другом. я так понимаю, что здесь когда-то были кавычки ? ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Ground |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 321 Регистрация: 27.2.2006 Где: Комсомольск Репутация: нет Всего: 1 |
Да, кавычки были, по запарке забыл их сюда скопировать. У файла нет физической копии, он был создан в сторонней программе средствами WinAPI. Помечен как Memory Mapped File в Global пространстве имен с именем DataFile_001.mkio. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
QFile работает через CreateFile, а Memory Mapped File нужно открывать OpenFileMapping
Не пробовал, но может сработать
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Ground |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 321 Регистрация: 27.2.2006 Где: Комсомольск Репутация: нет Всего: 1 |
borisbn, спасибо за толковую идею, но _open_osfhandle возвращает -1. Наверное это даже к лучшему - такие преобразования до добра не доведут. Скорее всего буду добавлять WinAPI в чистом виде, раз уж других способов нет.
А вопрос пусть повисит пока, может быть кто-нибудь предложит другие идеи. Это сообщение отредактировал(а) Ground - 28.6.2011, 09:41 |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
скорее всего, так и должно было быть, т.к. рез-тат OpenFileMapping это не файловый HANDLE
![]() согласен на 100 %.
мысля пришла: наследуйся от QIODevice ! В дальнейшем можешь использовать класс практически как QFile ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |