Citat:
Mikky je napisao:
btw jel moze neko da mi objasni zasto se prvo koristi funkcija tipa find_first_file pa onda find_next_file tj zasto je to tako uvedeno
zar nisu mogli da uvedu jednu funkciju npr Find_Matching_File ili tako nesto
koja ce da trazi lepo sve fajlove koji zadovoljavaju zadati kriterijum
a ne prvo nadji prvi pa onda nadji sledeci takav....malo mi je glup sistem
Opet bi se trebalo staviti u poziciju nekoga ko to implementira.
Recimo da ti trazis informacije o fajlovima "*.tex", i posaljes poziv FindMeAllFiles("*.tex") koji ti alocira svu potrebnu memoriju (recimo 2MB da smesti sve fajlove, datume pravljenja i izmene istih, dozvole/atribute i slicno). E sad, ova funkcija ti vraca pointer, i ti naravno moras da saznas da li je doslo do greske. I zato pozivas neku funkciju WasThereEverAnError, koja ti vraca da li je bilo greske. I, sad ti ustanovis da je bilo greske. I na kraju, ti meni reci gde je doslo do greske???? Sta uraditi ako je doslo do greske izmedju 6. i 7. fajla?? Nastaviti? Prekinuti? Ponoviti?
Naravno, ovde smo zanemarili cinjenicu da bi ti (programer) mogao da zaboravis da dealociras memoriju, i svih 2MB bi se vuklo bespotrebno.
Zato, kao i mnoge druge operacije, sav posao podeljen je u tri faze: pocetak/inicijalizacija posla, sam posao, i okoncavanje posla. Ne znam zasto ti to nije cudno pri upotrebi jednog fajla, a pri citanju iz direktorijuma (koji je u osnovi i sam fajl), to izgleda cudno.
imamo fopen + prvi fread ekv. FindFirstFile()
zatim, fread ekv. FindNextFile()
i na kraju fclose ekv. FindClose()
Naravno, u fajlu "dirent.h" se nalaze zaglavlja za opendir, readdir, closedir funkcije na POSIX sistemima, a moze ih biti i na nekim drugim platformama (Mingw GCC za Win32 ga sadrzi), koji se onda koriste isto kao i funkcije za citanje fajlova.
Zato zapitaj se kada ti je postalo prirodno da se fajlovi na taj nacin citaju, i gde se nalazi granica zasto bi ti citanje direktorijuma bilo cudno ukoliko se odvija na isti nacin. Meni se cini da bi jedino mesto zabune moglo biti to sto se pri citanju direktorijuma pri iniciranju citanja, istovremeno i ucita prvi podatak, ali to je zato sto se "format" direktorijuma poznaje.
Toliko.
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.