На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> Копирование/Создания файла
    При попытки создать/скопировать файл, с уже имеющейся в пунке назначения одноименной директорией ничего не выходит. Т.е. если создать в папке, куда копируется файл с именем "FILE1.TXT" папку с таким же именем - скопировать файл/создать файл не получится, однако сама Windows это каким-то образом делает... Кто-нибудь знает варианты?
      еще бы показал как копируешь, то вообще было б всё понятно...


      используй SHFileOperation
        ElcnU копирую через обычный CopyFile(Ex). Над SHFileOperation думал, но это как крайний вариант.. Неужели стандартными функциями для работы с файлами/папками нельзя ограничиться?

        Добавлено. Попробовал SHFileOperation - результат нулевой. Более того, попробовал скопировать средствами Windows - тоже не дает (даже командой copy). Похоже, ситуацию нельзя решить без удаления/перемещения папки...
        Сообщение отредактировано: Azatoth -
          Вообще, у CopeFile есть последний параметр для этого
          Цитата MSDN
          bFailIfExists [in]

          If this parameter is TRUE and the new file specified by lpNewFileName already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds.
            B.V. все верно, есть такой параметр. Вот только функция все равно не выполнится по причине
            Цитата
            An application cannot create a directory with CreateFile; it must call CreateDirectory or CreateDirectoryEx to create a directory. Opening a directory with CreateFile requires the FILE_FLAG_BACKUP_SEMANTICS flag.

            Так что увы, похоже мой вопрос лишен смысла.
            Сообщение отредактировано: Azatoth -
              Вообще правильный путь, или предлагать пользователю перезаписать файл, или скопировать файл FILE1.TXT в файл с именем FILE1(XXx).TXT .
              И перед копированием самому это проверить. А имя папки не должно совпадать с именем файла.

              Цитата
              однако сама Windows это каким-то образом делает

              Каким образом можно повторить эксперимент по созданию одноимённых файла/папки ??
              Сообщение отредактировано: Jenya -
                Jenya вопрос был не в том, как правильно/неправильно, а в том - как быть:) Эксперимент повторить очень просто. Создаете текстовый файл "Текстовый документ.txt", рядом создаете новую папку и пытаетесь пытаетесь переименовать ее в "Текстовый документ.txt". Результат - сообщение об ошибке.
                На самом деле жил с какой-то странной уверенностью, что сама Windows умеет копировать не взирая на такие папки, а когда проверил - осознал всю глубину своего заблуждения:)
                  Цитата Azatoth @
                  папку с таким же именем

                  Вот сей момент я пропустил. Показалось, что речь идет о перезаписи файла. И часто встречаются папки с именами вида *.*? :) Самый простой выход -- проверка на атрибуты конечного файла. Если это окажется папка, то лучше предложить пользователю переобозвать конечный файл
                    Поставь в имя файла русскую буковку, ну например "е". И будет тебе щастье. :yes:
                      Цитата
                      Эксперимент повторить очень просто.

                      Ну так имелся ввиду эксперимент с положительным результатом. А так повторить ошибку очень просто.
                      Сообщение отредактировано: Jenya -
                      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0532 ]   [ 15 queries used ]   [ Generated: 2.06.24, 06:32 GMT ]