Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Вложение файлов. (http://forum.oszone.net/showthread.php?t=192968)

Chilli 03-12-2010 21:57 1557778

Вложение файлов.
 
Мне нужно к программе прикрепить некоторые файлы/папки, которые при выполнении должны извлекаться в указанную в коде директорию.
Файлы я добавил в качестве ресурсов, но каким образом указывать в коде директорию извлечения?
P.S. Относительно VC++ 2010.

Admiral 03-12-2010 22:51 1557809

Chilli, прописать в ресурсах приложения
IDресурса RCDATA имя файла который нужно запаковать
а потом извлекать работая с соответственными функциями.
Как засунуть файл в ресурсы и достать его оттуда

Файлы я добавил в качестве ресурсов, но каким образом указывать в коде директорию извлечения?
По ссылки выше есть пример hFile=open("AnyFileName" ... где "AnyFileName" не только имя файла куда распаковать с ресурса, но и сам путь (который может содержать требуемую директорию).
Второй вариант: изменить текущею директорию приложения, на ту в которую нужно распаковать ресурс - SetCurrentDirectory.

Chilli 06-12-2010 18:05 1559682

Admiral, из статьи по ссылке скопировал код и отредактировал под свое добро.
Сразу же подсветился параметр S_IWRITE, а еще мне стало не понятно, почему в таком разжеванном примере не объявлена переменная k...
После того, как я прописал
Цитата:

#define S_IWRITE 1
и проделкарировал k, то все заработало, но создался только пустой файл, и все.

Admiral 07-12-2010 09:02 1560026

Chilli есть другой способ записи в файл
Код:

        HANDLE hFile = CreateFile(ResName, GENERIC_WRITE, 0, NULL,
                                CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_ARCHIVE, NULL);
       
        if (hFile != INVALID_HANDLE_VALUE)
        {
                DWORD dwDummy;
                if (WriteFile(hFile, lpbArray, dwFileSize, &dwDummy, NULL))
                        bSuccess = true;
                CloseHandle(hFile);
        }
       
        FreeResource(hGlob);

Где ResName путь куда записать файл. Так же используется как имя ресурса.
Пример ценен именно работой с ресурсами, способ записи использовался приведённый выше, по этому с нюансами S_IWRITE и k не столкнулся.


Время: 05:27.

Время: 05:27.
© OSzone.net 2001-