Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Профессионал
Рейтинг: 4590
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2466
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 1995
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1567
Дата выхода:22.09.2010, 19:00
Администратор рассылки:Verena, Профессионал
Подписчиков / экспертов:337 / 167
Вопросов / ответов:1 / 1
IRC-канал по теме:#C

Вопрос № 179955: Всем привет. Нужно написать: Программу синхронизации двух директорий. Программа может быть либо в окне или в виде MS-DOS. Функции программы: 1) Сравнение А и Б директорий по содержимому и выдача результатов: какие файлы есть и в А и...



Вопрос № 179955:

Всем привет. Нужно написать: Программу синхронизации двух директорий.

Программа может быть либо в окне или в виде MS-DOS.

Функции программы:
1) Сравнение А и Б директорий по содержимому и выдача результатов: какие файлы есть и в А и в Б, какие только в А, какие только в Б;
2) Выполнить частичную синхронизацию из А в Б: из А в Б копируется недостающие файлы;
3) Выполнить полную синхронизацию из А в Б: из А в Б копируются недостающие файлы, и из Б удаляется все файлы, которых нет в А;

Просьба написать комментарии в коде, просто это тема моей курсовой, надо будет объяснять преподавателю.
Программа должна работать в WindowsXP, сам я пользуюсь CodeGear RAD Studio 2009 C++ Builder 2009.

Отправлен: 17.09.2010, 18:32
Вопрос задал: SunnyPlanet, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Сандров Алекс, Студент :
Здравствуйте, SunnyPlanet.

Поэтому быстро по коду:

Списки файлов в первом, втором каталоге и общие:
std::vector<std::string> vDir1, vDir2;
std::vector<std::string> vDirSame;

Функции:
INT CALLBACK BrowsePathProc(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM pData)
BOOL BrowseForFolder(HWND hWnd, HWND hEdit)

Используются для открытия окна выбора каталога. Можно выкинуть, тогда надо просто будет вбивать пути руками.
________
void CollectFiles(char *szPath, std::vector<std::string>* pvPaths)

Собирает список файлов из каталога szPath в массив pvPaths. Служебная функция.
________
void SortFiles()

Обрабатывает оба списка файлов (полученные через функцию CollectFiles), одинаковые складывает в vDirSame и выкидывает из vDir1 и vDir2. Служебная функция.
________
void SoftSync()

Мягкая синхронизация. Зовёт SortFiles, потом копирует то, что осталось из vDir1 в vDir2

void ClearDest()
Чистит второй каталог во время жёсткой синхронизации

_____
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)

Это функция обработки окна диалога. В ВСВ надо вставить обработчики для трёх кнопок и внести в них код соответсвенно из блоков:

case IDC_COMPARE:
case IDC_SYNC1:
case IDC_SYNC2:

в IDC_COMPARE для вывода информации используетс ListView, но можно выводить в любое другое место.
Главное там вначате позвать SortFiles(); и потом в трёх циклах разобрать данные из трёх массивов с файлами.

_______
int APIENTRY WinMain(...) - основная функция программы, в BCB не нужна, там всё автоматом сделается. У меня там создаются окна и всё такое...

PS. Если будут вопросы, спрашивай.
Некорректные замечания, технические проблемы следует обсуждать на форуме или через техподдержку.
-----
∙ Отредактировал: Verena, Профессионал
∙ Дата редактирования: 21.09.2010, 11:08 (время московское)

Приложение:
Прикрепленный файл: загрузить »

Ответ отправил: Сандров Алекс, Студент
Ответ отправлен: 21.09.2010, 10:25
Номер ответа: 263120

Оценка ответа: 5

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 263120 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.20 от 21.09.2010

    В избранное