karolski Napisano Styczeń 20, 2009 Zgłoś Share Napisano Styczeń 20, 2009 Witam, Mam do wygenerowania biblioteke ktoral istuje pliki z katlaogu i jego podkatlaogow program juz dziala normalnie ale jak chce to ujac w biblioteke to przy kompilaci wyrzuca ponizej wymienione bledy ktorych nie umiej zidentyfikowac. #include <windows.h> // dolaczenie bibliteki z funkcjami winapi #include <stdlib.h> #include <cstdlib> #include <iostream> #include <fstream> BOOL WINAPI DllEntryPoint (HINSTANCE hinstDLL , DWORD fdwReason, LPVOID lpvReserved) { return(TRUE); } const int BUFOR = 32768; // wielkosc bufora BUFOR const int MAX_LIST_PLIK = 32768; // ograniczenie na ilosc listowanych plikow struct folder { char sciezka[MAX_PATH+1]; // przechowamy to sciezke do pliku ktory listujemy - zmienna tekstowa typu char char nazwa[MAX_PATH+1]; // przechowamy tu nazwe pliku listowanego - zmienna tekstowa typu char LARGE_INTEGER rozmiar[MAX_PATH+1]; // przechowmay tu rozmiar pliku ............ }; // struktura danych do ktorej zapiszemy dane wylistowanych plikow typedef TCHAR* TCHARptr; // definicja typu char ................ //using namespace std; // przestrzenie nazw folder * __declspec(dllexport) _stdcall listowanie(const char * sciezkastart) { int liczbaFolderow = 0; int znacznikczytania = 0; int znacznikzapisania = 0; int ilePlikowZnaleziono = 0; int i = 0; int ilePlikowZnalezionoZnacznik = 0; HANDLE hFile; TCHAR NazwaPliku[MAX_PATH+1]; TCHAR glownyfolder[MAX_PATH+1]; TCHAR folderznazwapliku[MAX_PATH+1]; TCHAR bierzacyfolder[MAX_PATH+1]; WIN32_FIND_DATA kontener; // inicjowanie winapi find data, jest to tablica struktur w ktorej sa dane na temat kolejno znajdywanych plikow std::ofstream filesFound; folder* allFilesFound; // wskaznik na strukture char filename[MAX_PATH] = ""; char sciezka[MAX_PATH] = ""; char filefound[MAX_PATH] = ""; char filenamefound[MAX_PATH] = ""; LARGE_INTEGER filesizefound; char *s; strncpy(NazwaPliku,"*",MAX_PATH); strncpy(glownyfolder,sciezkastart,MAX_PATH); // tworzymy tablice dynamiczna aby przechowac w niej drzewko katalogow folder* folderArray = new folder[BUFOR]; strncpy(folderArray[znacznikzapisania].sciezka,glownyfolder,MAX_PATH); znacznikzapisania = znacznikzapisania + 1; allFilesFound = new folder[MAX_LIST_PLIK]; // tworzymy liste drzewka katalogow i podkatalogow aby nastepnie wybrac z nich pliki while ((znacznikczytania < znacznikzapisania) && (znacznikzapisania < BUFOR)) { strncpy(folderznazwapliku,folderArray[znacznikczytania].sciezka,MAX_PATH); strncpy(bierzacyfolder,folderArray[znacznikczytania].sciezka,MAX_PATH); strncat(folderznazwapliku,"*",1);// add wildcard znacznikczytania = znacznikczytania + 1; hFile = FindFirstFile (folderznazwapliku, &kontener); if (hFile == INVALID_HANDLE_VALUE) { } else { if (((kontener.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) && ((strcmp(kontener.cFileName,".")))) { if ((znacznikzapisania) >= BUFOR) { // zatrzymuje szukanie folderow do wylistowania, poprzez przekroczenie ilosci folderow przewidzianego przez bufor } else { strncpy(folderArray[znacznikzapisania].sciezka,bierzacyfolder,MAX_PATH); strncat(folderArray[znacznikzapisania].sciezka,kontener.cFileName,MAX_PATH); strncat(folderArray[znacznikzapisania].sciezka,"\\",1);// dolacza na koniec backslasha "\" znacznikzapisania = znacznikzapisania + 1; } } while ( (FindNextFile(hFile, &kontener))) { if (((kontener.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) && ((strcmp(kontener.cFileName,"..")))) { if ((znacznikzapisania) >= BUFOR) { // zatrzymuje szukanie folderow do wylistowania, poprzez przekroczenie ilosci folderow przewidzianego przez bufor } else { strncpy(folderArray[znacznikzapisania].sciezka,bierzacyfolder,MAX_PATH); strncat(folderArray[znacznikzapisania].sciezka,kontener.cFileName,MAX_PATH); strncat(folderArray[znacznikzapisania].sciezka,"\\",1);// dolacza na koniec backslasha "\" znacznikzapisania = znacznikzapisania + 1; } } // if } // while FindClose(hFile); } } // while (znacznikczytania != znacznikzapisania liczbaFolderow = znacznikzapisania; // teraz listujemy wszystkie pliki z wczesniej znalezionych folderow for (i = 0; i < liczbaFolderow; i=i+1) { strncpy(bierzacyfolder,folderArray[i].sciezka,MAX_PATH); strncpy(folderznazwapliku,folderArray[i].sciezka,MAX_PATH); strncat(folderznazwapliku,"*",1); strncat(folderznazwapliku,NazwaPliku,MAX_PATH); strncat(folderznazwapliku,"*",1); strncpy(kontener.cFileName,"\",1); hFile = FindFirstFile (folderznazwapliku, &kontener); if (hFile == INVALID_HANDLE_VALUE) { // gdy podamy nieprawidlowa sciezke } else { while (FindNextFile(hFile, &kontener)) { if ((kontener.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)) { // gdy znajdujemy folder to pomijamy go, byl on zapisany juz wczesniej wiec petla i tak wroci i wyslistuje pliki z tego foldera } else { if (ilePlikowZnalezionoZnacznik < MAX_LIST_PLIK) { filesFound << bierzacyfolder << kontener.cFileName << std::endl; strncpy(allFilesFound[ilePlikowZnalezionoZnacznik].sciezka,bierzacyfolder,MAX_PATH); //strncat(allFilesFound[ilePlikowZnalezionoZnacznik].sciezka,kontener.cFileName,MAX_PATH); strncpy(allFilesFound[ilePlikowZnalezionoZnacznik].nazwa,kontener.cFileName,MAX_PATH); filesizefound.LowPart = kontener.nFileSizeLow; filesizefound.HighPart = kontener.nFileSizeHigh; //allFilesFound[ilePlikowZnalezionoZnacznik].rozmiar = filesizefound.QuadPart; ilePlikowZnalezionoZnacznik = ilePlikowZnalezionoZnacznik + 1; ilePlikowZnaleziono = ilePlikowZnaleziono + 1; } } }// while FindClose(hFile); } // else } // petla for z argumentem liczbaFolderow > 0 delete [] folderArray; return allFilesFound; } $rr%$%Ń%ąŃźąŃą$$)$%Ń%ąŃźąŃą$$)$%Ń%ąŃźąŃą$$)$%Ń%ąŃźąŃą$$)$%Ń%ąŃźąŃą$$(%Zvqrs6ŹŚ-jźk7hŚźjXŚÓFy0J&Ś)ZśśnĄ0(V+.jTM9>v+bsZ)ŁZ>Ś1je ,r'(v^XĘipfĆFW\"FV67V2FĆĆW'B7FF6ĆĆ7FvćR67B6\"66WŚś7F'B'r8z0jxn&^)óĘIZw7yŹb{ZŚ unsigned int __declspec(dllexport) _stdcall PodajRozmiarObszaruNiezajetego(char symbol_dysku) Z gory dzieki za pomoc. Link do komentarza Udostępnij na innych stronach More sharing options...
spammer Napisano Styczeń 20, 2009 Zgłoś Share Napisano Styczeń 20, 2009 Siema. Nie wiem o co u Ciebie chodzi. Ale mi jak próbowałem to kompilować pod dev-cpp na win XP to error mi wywalało przy if (hFile == INVALID_HANDLE_VALUE){ } %Ź&Ś'3ry.Św<ęh)Ł90hz{ zŚĘP:n'ŚŚ if (hFile == INVALID_HANDLE_VALUE) break; &nuŚn{w8zg( :&Ź3ĘZ&r$ąŃŃŃ Link do komentarza Udostępnij na innych stronach More sharing options...
karolski Napisano Styczeń 20, 2009 Autor Zgłoś Share Napisano Styczeń 20, 2009 bledy u ciebie zpaenwe sa przez ustawienia kompilatora, pewnie da sie to zmienic w ustawienaich projektu, ale tak czy tak na gorze byly zbedne biblioteki teraz to jest lepiej pozostal tylko problem przy deklaracji funkcji w naglowku: #include <windows.h> #include <stdlib.h>%^Źy)YXXĘ^ H[[YJ Y^ B&&yŻ<Ś Error 1 error C2143: syntax error : missing '{' before '*' e:\listowanie_generator\funcja.c 24 Error 2 error C2059: syntax error : 'type' e:\listowanie_generator\funcja.c 24 zastanawiam sie czy tak wogole to moze byc, ide dalej szukac rozwiazania i czekam na dalsza pomoc, z gory dzieki Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.