FanXX Opublikowano 31 Października 2012 Udostępnij Opublikowano 31 Października 2012 Witajcie, chciałbym otrzymać od was małą pomoc gdyż sobie z tym nie potrafię po prostu poradzić. Skrypt GML file_bin_size odwołuje się do plików tekstowych. Ja natomiast muszę z poziomu GM'a sprawdzić ile rozmiaru ma plik np EXE czy MP3 w folderze z grą. Mi chodzi o tzw "ograniczony rozmiar" plików znajdujących się w folderze czyli u mnie ma działać tak, że gdy w folderze będzie plików ponad 100 MB to gra sie nie włączy. :D Czy sprawdzanie plików pod kątem rozmiaru prócz tekstowych jest możliwe? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 31 Października 2012 Udostępnij Opublikowano 31 Października 2012 Witajcie, chciałbym otrzymać od was małą pomoc gdyż sobie z tym nie potrafię po prostu poradzić. Skrypt GML file_bin_size odwołuje się do plików tekstowych. Ja natomiast muszę z poziomu GM'a sprawdzić ile rozmiaru ma plik np EXE czy MP3 w folderze z grą. Mi chodzi o tzw "ograniczony rozmiar" plików znajdujących się w folderze czyli u mnie ma działać tak, że gdy w folderze będzie plików ponad 100 MB to gra sie nie włączy. :D Czy sprawdzanie plików pod kątem rozmiaru prócz tekstowych jest możliwe? file_bin_size nie odwołuje się tylko do plików tekstowych... ale do każdego pliku. Otwierasz plik poprzez file_bin_open(fname,mod) a zwróconą wartość zapisujesz do zmiennej, którą później można wykorzystać do innych funkcji z prefiksem file_bin_*, w tym file_bin_size(fileid). Nie zapomnij jednak o file_bin_close(fileid) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
FanXX Opublikowano 1 Listopada 2012 Autor Udostępnij Opublikowano 1 Listopada 2012 Dzięki ogromne za pomoc. Zastosowałem kod z twojego wzoru taki: GML var size,a; size = file_bin_open('Plik.exe',2) a = file_bin_size(size)/1000000 show_message(a) file_bin_close(size) I działa idealnie. Tylko mnie ciekawi jedna rzecz. Czy da się jakoś np z folderu pliki wyskanować z poziomu GM'a wszystkie zawarte w nim pliki i zliczyć ich rozmiar? Pobawie się file_find może coś mi sie uda. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Skull Opublikowano 1 Listopada 2012 Udostępnij Opublikowano 1 Listopada 2012 Może zrób tablice, która w pętli będzie wczytywała wszystkie pliki w folderze a na końcu doda ich rozmiar? Chociaż może być problem z nazwami plików, no chyba że będą np. 001.data, 002.data itd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
FanXX Opublikowano 1 Listopada 2012 Autor Udostępnij Opublikowano 1 Listopada 2012 Może zrób tablice, która w pętli będzie wczytywała wszystkie pliki w folderze a na końcu doda ich rozmiar? Chociaż może być problem z nazwami plików, no chyba że będą np. 001.data, 002.data itd. Tablic robić nie potrafie, dlatego szukam examplów. Co do nazw to coś takiego będzie jak opisałeś czyli app001.JAKISFORMAT. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 1 Listopada 2012 Udostępnij Opublikowano 1 Listopada 2012 Zapisz wszystkie pliki z folderu funkcją file_find do listy, a następnie otwieraj każdy po kolei i dodawaj ich rozmiar do zmiennej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Skull Opublikowano 1 Listopada 2012 Udostępnij Opublikowano 1 Listopada 2012 Przeczytaj to i zrób parę ćwiczeń z tablicami. Według mnie jest to najlepszy sposób dla Twojego problemu, a tablice się bardzo przydają :). Potem tylko stworzysz pętle for, która wszystko wczyta, albo już od razu w obiegu będzie liczyła rozmiar plików. Edit Maybe to? GML rozmiar = 0; for(i = 0; i <= ilość plików; i++) { var size, a; size = file_bin_open('app00' + i + '.JAKISFORMAT',2) a = file_bin_size(size)/1000000 rozmiar += size; file_bin_close(size) } (Z góry przepraszam za jakiekolwiek błędy, w GML siedzę od niedawna, ale jest podobny do C++/Javy.) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 1 Listopada 2012 Udostępnij Opublikowano 1 Listopada 2012 Mniej inwazyjną metodą i oszczędną będzie skorzystanie z list :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 1 Listopada 2012 Udostępnij Opublikowano 1 Listopada 2012 Najlepiej będzie korzystać z: file_find_first(mask,attr), file_find_next(), file_find_close() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 1 Listopada 2012 Udostępnij Opublikowano 1 Listopada 2012 GML size = 0; find = file_find_first(working_directory+"\*", 0); file = -1; while (find != "") { file = file_bin_open(working_directory+"\"+find, 0); size += file_bin_size(file); file_bin_close(file); find = file_find_next(); } file_find_close(); show_message("Size: "+string(size/1024/1024)+" MB"); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się