Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копирование директории, С++ MSVS 2005 
V
    Опции темы
WTF4XZ
  Дата 28.11.2007, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 16.4.2007
Где: 63 Самара

Репутация: нет
Всего: 5



Язык С++ среда MSVS 2005
(Делать это собираюсь через CLR - Windows Forms Application.)

Задача:
Скопировать директорию (вместе с файлами, поддиректориями) из указанного пути в указанный путь.
При копирование сохраняется иерархия директорий.

Собственно вопрос в алгоритме, данного копирования.

Если не затруднит, то указать названия функций, что бы мне не перебирать весь MSDN.
Буду благодарен за подсказки где искать и что читать по этой теме. (гугл с введённым запросом просьба не предлагать)
--------------------
Я создание эмоций, создание способные чувствовать не только эмоции людей но и машин.Я EMO_CODER != FALSE;Никто не знает о нас, но мы есть, мы живём, мы кодим и мы... чувствуем, ипспытываем такие эмоции.. сильнее любого бинарника, мощнее любого ассемблера.
PM MAIL ICQ GTalk Jabber   Вверх
archimed7592
Дата 28.11.2007, 03:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: нет
Всего: 93



System::IO::Directory::GetFileSystemEntries(path).

На будущее: для вопросов по .NET'у(коим C++/CLR тоже является) есть соответствующий раздел.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
WTF4XZ
  Дата 28.11.2007, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 16.4.2007
Где: 63 Самара

Репутация: нет
Всего: 5



Эм... ну мне нужен алгоритм smile это уже не столь обращено к конкретным языкам.
А что касается .NET то мне нужен С++
--------------------
Я создание эмоций, создание способные чувствовать не только эмоции людей но и машин.Я EMO_CODER != FALSE;Никто не знает о нас, но мы есть, мы живём, мы кодим и мы... чувствуем, ипспытываем такие эмоции.. сильнее любого бинарника, мощнее любого ассемблера.
PM MAIL ICQ GTalk Jabber   Вверх
maxim1000
Дата 28.11.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



так очень просто - рекурсивно
чтобы скопировать директорию, нужно создать в нужном месте новую с таким же именем и скопировать туда каждый элемент старой

Это сообщение отредактировал(а) maxim1000 - 28.11.2007, 23:16


--------------------
qqq
PM WWW   Вверх
WTF4XZ
Дата 29.11.2007, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 16.4.2007
Где: 63 Самара

Репутация: нет
Всего: 5



maxim1000, Спс.

Если никого не затруднит то какая функция по созданию директория и создания листа объектов?
--------------------
Я создание эмоций, создание способные чувствовать не только эмоции людей но и машин.Я EMO_CODER != FALSE;Никто не знает о нас, но мы есть, мы живём, мы кодим и мы... чувствуем, ипспытываем такие эмоции.. сильнее любого бинарника, мощнее любого ассемблера.
PM MAIL ICQ GTalk Jabber   Вверх
Bogdan1024
Дата 29.11.2007, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 3
Всего: 13



Цитата

созданию директория

System.IO.Directory.CreateDirectory
Цитата

создания листа объектов?

System.IO.Directory.GetDirectories
System.IO.Directory.GetFiles


--------------------
user posted image
PM MAIL   Вверх
PeLigrim
Дата 29.11.2007, 04:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



Как я тебя понимаю, WTF4XZ! Спрашиваешь об алгоритме, а тебе все время уже что-то готовое суют, на каком-то языке и тычут тебе этим как ламеру... Надеюсь, я тебя правильно понял:
Код

void ScanDir (char *Dir)
{
   if (Dir[strlen (Dir) - 1] != '\')
    strcat (Dir, "\\\0");

   // Ну и прочие проверки на безопастность...

   // SEARCHREC SR;

   char *t = new char[strlen (Dir) + 1];
   t[0] = '\0';
   strcpy (t, Dir);
   strcat (t, "*.*");

   // int k = 0;

   // Здесь вставляется (в зависимости от реализации, платформы и языка) поиск файлов и поддиректорий
   // Например, k = FindFirst (t, ANYFILE, &SR);
   // while (!k)
   // {
   //     if (SR.Name && strcmp (SR.Name, ".\0") && strcmp (SR.Name, ".."))
   //     {
   //         if (DIRECTORY == (SR.Attr & DIRECTORY))
   //         {
   //             // Create_Dir_Method (SR.Name);

   //             char *p = new char[strlen (SR.Name) + strlen (Dir) + 1];
   //             strcpy (p, Dir);
   //             strcat (p, SR.Name);

   //             ScanDir (p); // !!!
   //         }
   //         else
   //         {
   //             // Copy_File_To_Directory_Method (Dir);
   //         }
   //     }
   //    k = FindNext (&SR);
   //  }
}


Можно, конечно, и без рекурсии обойтись (потому как может случиться stack overflow), но это уже самостоятельно подумай. Если не придумаешь такой метод, то я помогу.

Хотя, конечно, быстрее воспользоваться C#-методами, которые тут предлагали выше...

P.S.: данная реализация - лишь пример, не привязанный к какой-нибудь конкретной реализации. Виндошные API-функции здесь использованы для наглядности
PM MAIL   Вверх
archimed7592
Дата 29.11.2007, 04:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: нет
Всего: 93



Последний пост улыбнул smile.

Особенно вот это:
Цитата(PeLigrim @  29.11.2007,  04:41 Найти цитируемый пост)
потому как может случиться stack overflow

smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
WTF4XZ
Дата 29.11.2007, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 16.4.2007
Где: 63 Самара

Репутация: нет
Всего: 5



Bogdan1024, Пасибки большие

PeLigrim, 
Цитата(PeLigrim @  29.11.2007,  04:41 Найти цитируемый пост)
Как я тебя понимаю, WTF4XZ! Спрашиваешь об алгоритме, а тебе все время уже что-то готовое суют, на каком-то языке и тычут тебе этим как ламеру... Надеюсь, я тебя правильно понял:

не совсем smile
--------------------
Я создание эмоций, создание способные чувствовать не только эмоции людей но и машин.Я EMO_CODER != FALSE;Никто не знает о нас, но мы есть, мы живём, мы кодим и мы... чувствуем, ипспытываем такие эмоции.. сильнее любого бинарника, мощнее любого ассемблера.
PM MAIL ICQ GTalk Jabber   Вверх
archimed7592
Дата 29.11.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: нет
Всего: 93



WTF4XZ, если вопросов больше нет, то пометь тему решённой.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
farad
Дата 29.11.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 1.11.2007

Репутация: 1
Всего: 6



Как вариант, дешево сердито без рекурсии и запросов на перезапись существующих файлов:
Код

                 System::Diagnostics::Process^ proc=
                     gcnew System::Diagnostics::Process();
                 proc->StartInfo=gcnew System::Diagnostics::ProcessStartInfo("xcopy.exe","d:\\srcdir d:\\dstdir /I /E /Y");
                 //разремарить при желании скрыть консоль
                 //proc->StartInfo->WindowStyle=System::Diagnostics::ProcessWindowStyle::Hidden;
                 proc->Start();
                 proc->WaitForExit();


PM MAIL   Вверх
archimed7592
Дата 29.11.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: нет
Всего: 93



Цитата(farad @  29.11.2007,  13:38 Найти цитируемый пост)
дешево сердито без рекурсии ...

И переносимо, и кроссплатформенно smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
farad
Дата 29.11.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 1.11.2007

Репутация: 1
Всего: 6



Цитата(archimed7592 @  29.11.2007,  14:11 Найти цитируемый пост)
И переносимо, и кроссплатформенно
 smile  Это ты к чему? Где здесь про кроссплатформенность и переносимость спрашивалось? А много ли кросплатформенных приложений написаных на MVC++? smile Да и приложений написанных для PC и переносимых на PDA не больше. 
PM MAIL   Вверх
archimed7592
Дата 29.11.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: нет
Всего: 93



Цитата(farad @  29.11.2007,  14:45 Найти цитируемый пост)
Где здесь про кроссплатформенность и переносимость спрашивалось?

.NET, вообще-то, позиционируется как кроссплатформенная платформа smile.


Цитата(farad @  29.11.2007,  14:45 Найти цитируемый пост)
А много ли кросплатформенных приложений написаных на MVC++?

Поверь, немало.


Цитата(farad @  29.11.2007,  14:45 Найти цитируемый пост)
Да и приложений написанных для PC и переносимых на PDA не больше.

PDA тут не при чём - у него "свой", урезаный FW. Я про другие PC-платформы.

Это сообщение отредактировал(а) archimed7592 - 29.11.2007, 15:07


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
farad
Дата 29.11.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 1.11.2007

Репутация: 1
Всего: 6



Флудить так флудить.
Цитата(archimed7592 @  29.11.2007,  15:06 Найти цитируемый пост)
.NET, вообще-то, позиционируется как кроссплатформенная платформа 
 это обязывает писать кроссплатформенный код?
Цитата(archimed7592 @  29.11.2007,  15:06 Найти цитируемый пост)
Поверь, немало.
 не верю.Нет смысла в разработке кроссплатформенных приложений на этом мутанте... есть куда более удобные и более производительные(для разработчика) средства...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1067 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.