XxMichałxX Opublikowano 9 Października 2009 Udostępnij Opublikowano 9 Października 2009 Robię takie coś co plik ini ściąga i jak już ściąga to jest pasek postępu, prędkość i takie tam, i teraz takie coś: mam podaną liczbę bajtów, np: 63488 w zmiennej "spd". Próbowałem napisać "parser" na dwa różne sposoby i nie wyszło, nie bardzo wiem jak to zrobić a chodzi mi o to żeby taki parser zamieniał te bajty (w przypadku tej liczby) na 62KB/s a jakby bylo bardzo duzo to np na nMB/s itd.. wiecie o co biega? Parser ma zamienaic po prostu liczbe bajtów (zmienną "spd") na stringa typu "62KB/s" "2MB/s" "789B/s" z gory thx e: moze byc z ułamkami też np 2,8MB/s e2: tzn. przy MB to musi byc z ulamkami ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Października 2009 Udostępnij Opublikowano 9 Października 2009 GML (GetByteSize) if(argument0<1024)return(string(argument0)+'b') if(argument0<1024^2&&argument0>=1024)return(string(argument0/1024)+'kb') if(argument0<1024^3&&argument0>=1024^2)return(string(argument0/(1024^2))+'mb') if(argument0<1024^4&&argument0>=1024^3)return(string(argument0/(1024^3))+'gb') if(argument0>=1024^4)return(string(argument0/(1024^4))+'tb') str=GetByteSize(63488) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 9 Października 2009 Udostępnij Opublikowano 9 Października 2009 Chyba nie rozumiem? str=string(spd)+KB/s O to chodzi? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 9 Października 2009 Udostępnij Opublikowano 9 Października 2009 jeszcze przy returnie dziel przez odpowiednią potegę 1024 (w zależności od jednostki) i przybliżaj, bo np. dla 1026 ktore jest mniejsze od 1024^2 wyświetli 1026kb, a to przecież jakiś 1kb ;) @Platyna: Jemu chodzi o skrypt taki jak PsichiX napisał, który 'skraca' do większej jednostki jeśli zajdzie taka potrzeba. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XxMichałxX Opublikowano 9 Października 2009 Autor Udostępnij Opublikowano 9 Października 2009 PsichiX z tym skryptem szło mi 68622Tb/s :D GML var stat,spd,prog,sd; stat=DM_DownloadStatus(did); spd=DM_GetSpeed(did); prog=DM_GetCompleted(did); sd=get_byte_size(spd); if stat=0 { show_message('Nie można nawiązać połączenia!'); game_end(); exit; } else if stat=3 { show_message('Pobieranie danych zakończone pomyślnie!'); room_goto_next(); } draw_healthbar(0,0,400,150,prog,c_black,c_red,c_lime,0,1,0); draw_set_font(dFont); draw_set_color(c_white); draw_text(100,38,"Trwa pobieranie informacji...#Prędkość "+sd+"#Pobrano "+string(prog)+"%"); to kod w draw Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 9 Października 2009 Udostępnij Opublikowano 9 Października 2009 Napisałem post nad twoim, że musisz dzielić przez odpowiednią potęgę 1024 :( GML if(argument0<1024)return(string(argument0)+'b') if(argument0<1024^2)return(string(argument0/1024)+'kb') if(argument0<1024^3)return(string(argument0/1024^2)+'mb') if(argument0<1024^4)return(string(argument0/1024^3)+'gb') return(string(argument0/1024^4)+'tb') a tak w ogóle to w gmlu nie można dawać potęg w postaci ^ chyba. Jest od tego funkcja power(x,n). (nie jestem pewien bo nie korzystałem z takiej formy potęgowania) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Października 2009 Udostępnij Opublikowano 9 Października 2009 o wlasnie, dopisalem w sprawdzaniu, a o zwracaniu zapomnialem - dzieki :D PS. argument0/(1024^n) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 9 Października 2009 Udostępnij Opublikowano 9 Października 2009 Potęga ma pierwszeństwo w kolejności wykonywania działań, czyż nie? :D (chyba, że GM ma pokręconą kolejność w tym wypadku). Jeszcze zapomniałem, że musisz round(x) zokrąglić, bo Ci ułamki powychodzą. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Października 2009 Udostępnij Opublikowano 9 Października 2009 poprawilem bo bylo nie kompletne: GML (GetByteSize) if(argument0<1024)return(string(argument0)+'b') if(argument0<1024^2&&argument0>=1024)return(string(argument0/1024)+'kb') if(argument0<1024^3&&argument0>=1024^2)return(string(argument0/(1024^2))+'mb') if(argument0<1024^4&&argument0>=1024^3)return(string(argument0/(1024^3))+'gb') if(argument0>=1024^4)return(string(argument0/(1024^4))+'tb') round moze sobie potem dodac, bo generalnie ma zwracac z ulamkiem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 9 Października 2009 Udostępnij Opublikowano 9 Października 2009 Sorry, że tak męczę ten temat, ale po co te dodatkowe warunki? Według mnie są nie potrzebne. Jak nie jest mniejszy od 1024 to idzie dalej i musi już być od niego większy bądź równy, a return kończy skrypt więc nie może sprawdzać dalszych warunków. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Października 2009 Udostępnij Opublikowano 9 Października 2009 to dla tego iz GM ma swoje humorki, z dobrego nawyku czasem lepiej cos skonkretyzowac niz liczyc na to ze wcale nie pomiesza czegos. 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ę