![]() |
|
|
![]()
|
|
| torero |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
У меня получилось два вопроса по одной теме.
1. Я использую выражение if(!CreateDirectory(puthto,NULL)) { ... } Но ошибка создания появляется и в том случае, если puthto уже существует и в него можно копировать файлы. Может быть есть метод, чтобы определить, существует заданный puthto или нет. 2. Далее, для копирования всех файлов, я использую связку: hSearch=FindFirstFile(puthoff,&FileData); ... if(!FindNextFile(hSearch,&FileData)), где puthoff задаю так: ...путь...\\*.* Но такое выражение не проходит. На конце можно только ставить или \\*.cpp (например) или \\Setup.* , т.е. идёт поиск файлов или одного расширения или одного имени. Можно, конечно, цикл сделать по всем расширениям, но может быть можно задать поиск всех файлов? |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 3 Всего: 60 |
...путь...\\* Добавлено @ 21:32
Это сообщение отредактировал(а) Fazil6 - 22.2.2008, 21:35 |
|||
|
||||
| BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: нет Всего: 10 |
1. PathFileExists
2. А так "Путь\\*"? -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
| torero |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
По вопросу 1- результат получился методом PathFileExists , спасибо.
А ответ Fazil6 не понял, это видимо другая платформа, объясни, пожалуйста, как этим пользоваться и где прочитать. По вопросу 2- ...путь...\\* даёт тот же результат, что и ...путь...\\*.* т.е. FindFirstFile(puthoff,&FileData); определяет FileData.cFileName=. (имя, как точка). Я бы подумал, что неправильно формирую puthoff, но, если пишу ...путь...\\*.срр , то получается правильно.Что делать? |
|||
|
||||
| BorisVorontsov |
|
||||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: нет Всего: 10 |
Показывай код. Этот код у меня работает как положено:
-------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
||||
|
|||||
| torero |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) torero - 26.2.2008, 19:54 |
|||
|
||||
| BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: нет Всего: 10 |
И? Не вижу вызова FindNextFile.
Добавлено через 43 секунды Кстати, приучись занулять структуры и массивы перед использованием. -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
| torero |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
FindNextFile идёт дальше, ошибка уже в том, что FileData.cFileName=. (точке), но я понял в чём дело.
Я создал проект Setup и запустил его на выполнение, т.е. он должен скопировать сам себя. А в проекте что идёт вначале, сверху вниз? Две точки, директория Debug, директория Res и затем все файлы. Вот, когда я обошёл при помощи, например, if(strcmp(FileData.cFileName,"Debug")==0 ) точки и поддиректории, то файлы скопировались все. И тогда работают и "\\*" и"\\*.*" Вобщем я понял так. Сделать универсальную программу для копирования составной директории не получится. Ну, две точки, допустим, есть везде, но поддиректории в каждом проекте разные. Значит, всё это нужно анализи- ровать и поддиректории создавать и копировать отдельно. Получится оригинальная программа. Если я ошибаюсь, поправьте меня, пожалуйста. |
|||
|
||||
| BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: нет Всего: 10 |
Какая же это ошибка?
Ты слышал когда-нибудь про рекурсивный поиск? Вот это оно. Ничего анализировать и копировать отдельно не нужно. См. выше. Поиск (форум, google) -- твой друг. -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
| torero |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
Согласен. Я уже понял, что ошибался. Совсем универсальную программу писать долго и она мне
не нужна, но для своих программ инсталляцию с СD RW уже делаю. Спасибо за советы. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |