Найти в Дзене
Junior Coder

C++. Пишем программу для открытия директории.

Предлагаю вам попробовать написать программу для чтения директории (папки) своими руками. Код небольшой, думаю, что набрать его вам не составит особого труда, зато вы попробуете себя в роли программиста С++ и получите представление об этом языке программирования. Как пользоваться компилятором вы можете посмотреть в другой моей статье. Для удобства код я разбил на части, они выложены в виде скриншотов (фото), далее идет объяснение каждой строки.

Итак, поехали:

-2

Подключаем необходимые библиотеки, "iostream" переводится как "поток ввода-вывода", она необходима для таких команд, как "cout", "wcout", "endl" и др. Библиотека "cstdlib" позволяет использовать системные команды "color" и "pause" в программе (команды стандартной консоли Виндоус). "Window.h" необходима для использования так называемых API-функций: "GetCurrentDirectory", "WIN32_FIND_DATA"и др.

-3

Открываем функцию main - это так называемая точка входа в программу и должна присутствовать во всех программах С и С++. Строка setlocale необходима для правильного отображения кирилицы в консоли, без нее вы увидите какие-то кракозябры вместо русских букв. В следующей строке мы получаем так называемый хэндл окна (или хандл - называейте как хотите), он нам понадобится чтобы в связке с функцией ShowWindow развернуть консоль во все окно. Далее объявляем переменные, вместо curr_dir вы можете придумать какое-то свое имя, более короткое или удобное, главное, чтобы оно было написано на латинице. Оператор MAX_PATH позволяет использовать неявный путь к директории, и получать его каждый раз при запуске программы. Явный путь к папке можно указать так:

const char curr_dir[] = "c:\\users\\user";

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

Переменную "s" я указал по привычке, вы можете не включать ее в свою программу, т.е., строчка в этом случае будет выглядеть так:

char curr_dir[MAX_PATH];

Хэндл hFile используется для работы с файлами. 

Handle - "ручка" в переводе, это двухбайтовый или четырехбайтовый (по размеру использующихся регистров-указателей ESI, EDI, SI, DI и др.) указатель на какой-то объект (файл, директория и др.), если интересно, то о регистрах вы можете почитать в другой моей статье "Ассемблер.Регистры". 

Строка system("color 0a") включена для использования ярко-зеленого цвета - "а" на черном фоне - "0" (так мне больше всего нравится ;)), вы можете поэксперементировать с цветами, для того чтобы узнать какой буквой или цифрой маркируется желаемый цвет наберите в системной консоли (cmd.exe) - color /?

В строке WIN32_FIND_DATA мы объявляем дескриптор f_file, вы можете придумать какое-то свое имя.

-4

Команда GetCurrentDirectory позволяет получить имя текущей директории (папка в которой находится программа), а команда lstrcat прибавляет к имени директории необходимое расширение, в нашем случае программа ищет все файлы, но если вы хотите искать, например, только фотографии, то наберите в компиляторе вместо этой строки:

lstrcat (curr_dir, "\\*.jpg");

-5

Итак, командой FindFirstFile мы ищем первый файл, если произойдет какая-то ошибка, то условие "if" откроет окно с сообщением об ошибке и восклицательным знаком, окно вызывается командой MessageBox. То что следует в скобках за MessageBox вы можете написать одной строкой, только не забудьте убрать знак переноса "\".

-6

Для поиска следующих файлов открываем цикл do - while, найденные файлы выводятся на экран оператором wcout, а оператор endl переводит курсор на новую строку после каждого имени файла. Системный оператор pause приостанавливает выполнение программы до тех пор, пока пользователь не нажмет какую-либо клавишу.

Оператор return не делает ничего, просто по соглашению между программистами каждая функция должна что-то возвращать и строка "return 0;" - это просто правило хорошего тона.

Набирая код посторайтесь не ошибаться - каждая точка или запятая, заглавная или прописная буква имеют значения. Если вы сделаете все правильно, то при запуске программы у вас должно открыться окно консоли как на скриншоте снизу. Удачи в изучении одного из самых мощных языков программирования!

-7
Код полностью
Код полностью

#С++ #Программирование

Наука
7 млн интересуются