Утилита выводит каталог файлов с подробной информацией

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

kitkatus
Сообщения: 5
Зарегистрирован: 25 ноя 2015, 10:32

Утилита выводящая список файлов в заданном каталоге с подробной информацией по каждому из них. (Windows)
(Прошу помощи сам не справлюсь!!!)
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Готов помочь, указанием того, в сторону каких функций смотреть. Вот список:

FindFirstFile
FindNextFile
GetFileSize
GetFileTime

Если нужна "хитрая" информация, наподобие стандартной иконки, ассоцированной с файлом в системе, то можно воспользоваться вот такой Shell API функцией:

SHGetFileInfo

Так же готов дать любые советы по коду, если что-то не будет получаться, но писать утилиту полностью не стану из педагогических соображений.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
kitkatus
Сообщения: 5
Зарегистрирован: 25 ноя 2015, 10:32

Romeo писал(а):Готов помочь, указанием того, в сторону каких функций смотреть. Вот список:

FindFirstFile
FindNextFile
GetFileSize
GetFileTime

Если нужна "хитрая" информация, наподобие стандартной иконки, ассоцированной с файлом в системе, то можно воспользоваться вот такой Shell API функцией:

SHGetFileInfo

Так же готов дать любые советы по коду, если что-то не будет получаться, но писать утилиту полностью не стану из педагогических соображений.

Код: Выделить всё

#include "stdafx.h"
#include "windows.h"
#include <iostream>

using namespace std;

void main()
{
	WIN32_FIND_DATA FindFileData;
	HANDLE hf;
	hf=FindFirstFile("c:\\1\\*", &FindFileData);
	if (hf!=INVALID_HANDLE_VALUE)
	{
		do
		{
			cout << FindFileData.cFileName << endl;
		}
		while (FindNextFile(hf,&FindFileData)!=0);
		FindClose(hf);
	}
}
У меня есть программа, но она не выводить информацию(Размер файла,тип,дата создания)
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Именно для этого я дал в своём предыдущем сообщении ссылки на функции GetFileSize и GetFileTime.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Структура WIN32_FIND_DATA содержит в себе поля с информацией о размере файла, времени его создания и об атрибутах.
kitkatus
Сообщения: 5
Зарегистрирован: 25 ноя 2015, 10:32

Romeo писал(а):Именно для этого я дал в своём предыдущем сообщении ссылки на функции GetFileSize и GetFileTime.

Как это реализовать?
kitkatus
Сообщения: 5
Зарегистрирован: 25 ноя 2015, 10:32

WinMain писал(а):Структура WIN32_FIND_DATA содержит в себе поля с информацией о размере файла, времени его создания и об атрибутах.

Как это реализовать?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

WinMain писал(а):Структура WIN32_FIND_DATA содержит в себе поля с информацией о размере файла, времени его создания и об атрибутах.
Кстати, да. Я и забыл :)
kitkatus писал(а):Как это реализовать?
Что именно реализовать? Вывод поля структуры? Да так же, как реализован вывод имени файла. Через имя объекта, точку и название поля. Или я вопрос неправильно понял?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
kitkatus
Сообщения: 5
Зарегистрирован: 25 ноя 2015, 10:32

Romeo писал(а):Кстати, да. Я и забыл :)

Что именно реализовать? Вывод поля структуры? Да так же, как реализован вывод имени файла. Через имя объекта, точку и название поля. Или я вопрос неправильно понял?

У меня есть код как внедрить туда что вы написали

Код: Выделить всё

#include "stdafx.h"
#include "windows.h"
#include <iostream>

using namespace std;

void main()
{
    WIN32_FIND_DATA FindFileData;
    HANDLE hf;
    hf=FindFirstFile("c:\\1\\*", &FindFileData);
    if (hf!=INVALID_HANDLE_VALUE)
    {
        do
        {
            cout << FindFileData.cFileName << endl;
        }
        while (FindNextFile(hf,&FindFileData)!=0);
        FindClose(hf);
    }
}
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сделай какое-то самостоятельное усилие. Вся необходимая информация тебе уже предоставлена.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить