Directory reader w MSVC++

0

Mam do napisania klasę:

Zaimplementowanie klasy która zapamięta i wypisze wszystkie pliki o podanych rozszerzeniach w danym katalogu(łącznie z plikami w podkatalogach).

Uwagi : bibioteka standardowa nie zapewnia obsługi katalogów. Można użyć : MFC-CfileFind, WinApi-FindFirstFile, innych. Wymogiem jest zamkniecię tego w swoją implementację, tak żeby metody publiczne nie były zależne od MFC, WinApi lub tego co zostanie użyte.
Słowa kluczowe: FindFirstFile, CfileFind, std::vector, std::list

Ma ktoś pomysł jak to zgrabnie i elegancko napisać w sposób w pełni obiektowy oraz 'reusable'? W sumie to nie wiem co zrobić żeby implementacja była niezależna od MFC lub WinApi. Ja piszę w WinApi.
Jest to część większego zadanka, które jest dosyć ważne. Wdzięczny byłbym za każdą pomoc.</quote>

0

Chodzi o to, ze jak ktos uzywa twojej klasy nie powinien sie przejmowac czy wykorzystuje ona MFC, WinAPI czy jeszcze co innego, wiec robisz np

class Dupa
{
public:
  std::vector< std::string > getFiles( std::string ext );
};

i wsio, a WinAPI czy czegos tam uzywasz wewnetrznie.

0

Było by proste gdybym to mógł zrobic w .NET, ale nie mogę...
Problem w brew pozorom nie jest całkiem banalny dla początkujących.

0

to lada moment bedzie w standardzie. ale skoro dostales takie zadanie - no coz, trudna rada. polecalbym podejrzec implementacje wlasnie tego nadchodzacego standardu, zwie sie to boost::directory_iterator

0

Ale czy w zadaniu nie chodzi przypadkiem o stworzeniu fasady/proxy? Przeciez nie uzywajac niczego nie da sie wylistowac plikow z katalogu.

tak żeby metody publiczne nie były zależne od MFC, WinApi lub tego co zostanie użyte.

Chodzi o to zebys to obudowal swoja klasa i nie kazal jej uzytkownikom uzywac np struktur jakie sie podaje do MFC, WinAPI czy czegos.

Tak na moj chlopski rozum.

0

no, czyli doslownie directory_iterator :))))

0

Ok, coś wymóżdżyłem.
Chcę się oprzeć na artykule:
http://msdn2.microsoft.com/en-us/library/aa365200.aspx

Tylko że... gdzie jest zdefiniowany typ LPTSTR? Brakuje mi nagłówka <strsafe.h>, mam nadzieje że nie tam właśnie... Mogę to ominąć ale z tym typem wyglądało by bardzo elegancko i działało z polskimi literami wydaje mi się.

0

lptstr jest pewnie w <windef.h> czyli jak dolaczysz <windows.h> to powinno byc. a tak w ogole to jest albo zwykly char* albo wchar_t*, zalezy czy kompilujesz jako mbsz czy widechar

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.