Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2021, 11:36   #1
Mitzzz
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 17
По умолчанию Программа, которая сравнивает файлы по содержимому ("Diff")

Добрый вечер (день)! Я разрабатываю программу, которая должна сравнивать файлы по содержимому и выводить различия и сходства в виде HEX-адреса, HEX-данных и текста файла. Подобное есть в "Total commander" в виде "Сравнить по содержимому".
В итоге я почти всё сделал, но никак не могу сообразить, как сделать нижеперечисленное:
1. Поблочное сравнение (чтобы отличия выделялись не только цветом, но и блоками, а также создать кнопки "Следующее отличие" и "Предыдущее отличие") - в общем, как в Total Commander;
2. Горизонтальный ползунок (scrollbar) - в случае если нужно будет уменьшить окно, а отображалось при этом чтобы всё и прокручивалось данным горизонтальным scrollbar'ом внизу;
3. Вертикальный ползунок (scrollbar) - работает некорректно. Почему-то при достижении конечного адреса начинает некорректно прокручиваться;
4. Кодировка UTF-8. Отображаются правильно цифры и латиница, а вот кириллица не хочет отображаться. Я создал условие-"заглушку", когда если нет букв и цифр, то отображаются точки, но вот почему-то кириллицу не выводит;
5. Добавить Progress bar, который показывает, сколько процентов было проверено. И кнопка "Отменить проверку". По идее, программа всё быстро выводит, но это тоже нужно добавить по условию;
6. При изменении размеров экрана программы нужно также сделать так, чтобы не по щелчку мыши обновлялся текст в полях, а сразу выводился.

Среда разработки - Visual Studio 2019, язык программирования - C++.

Проект прилагается по данной ссылке: https://disk.yandex.ru/d/iouYzQRb5iB1ug (размер = 362 мегабайт).
Сама программа, кстати, доступна в папке "Release", где можно посмотреть, как она работает на данный момент.

Последний раз редактировалось Mitzzz; 06.09.2021 в 11:39.
Mitzzz вне форума Ответить с цитированием
Старый 10.09.2021, 12:07   #2
Mitzzz
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 17
По умолчанию

Присылаю заново проект. Я добавил туда кнопки для сравнения, следующего и предыдущего отличия, выбор шрифта.

Осталось только доделать то, о чём я указал в первом сообщении.
Хотя бы сделать следующее и предыдущие отличия, а также нормально работающий scrollbar и progressbar + надпись в духе "Найдено различий: столько-то".
Вложения
Тип файла: zip CopyFilesComparsion1++.zip (1.23 Мб, 1 просмотров)
Mitzzz вне форума Ответить с цитированием
Старый 14.09.2021, 11:26   #3
Mitzzz
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 17
По умолчанию

В общем, для начала нужно сделать предыдущее и следующее сравнения.

Как это сделать? На основании обработки кнопки "Сравнить"?
Код:
//Обработка нажатия кнопки "Сравнить":
		if (lParam == (LPARAM)m_hBtnCompare->m_hWnd) {
			for (int i = 0; i < NUM_OF_FILES; i++) {
				arrayOfFiles[i].fileOpen.getFilePath();
			}
			if (m_text.PrepareBufferToPaint(arrayOfFiles, NUM_OF_FILES))
			{			
				for (int i = 0; i < NUM_OF_FILES; i++) {
					arrayOfFiles[i].fileOpen.m_scrollbar->top();
				}

				m_countOfLines = 0;

				long long tempPos = CPainter::GetMaxScrollPos(arrayOfFiles, NUM_OF_FILES);
				tempPos = tempPos - MAX_COUNT_OF_LINES(m_Height) + 2;
				
				
				for (int i = 0; i < NUM_OF_FILES; i++) {
					arrayOfFiles[i].fileOpen.m_scrollbar->setRange(0, tempPos);
				}
				
				m_text.m_toDraw = true;
				InvalidateRect(m_hWnd, NULL, true);
				SetFocus(m_hWnd);
			}
		}
Mitzzz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Должна быть создана usb-флешка, которая полностью сбрасывает "железо" "в ноль". laiho123 Операционные системы общие вопросы 3 20.02.2021 08:41
Составить процедуру, которая во введенной строке заменяет все буквы "а" на "*". Помогите написать программу в Pascal Tanya121 Помощь студентам 4 07.11.2018 17:31
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Pascal ABC строки - программа, которая каждую встреченную букву "б" заменяет сочетанием "ку" (использовать модули) Raigo Помощь студентам 6 17.05.2012 15:35
forma.otvet1.value == "4" не сравнивает значение поля с цифрой fs444 JavaScript, Ajax 3 06.12.2010 12:09