Crackkk-GM Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 Siema, dzisiaj napisałem skrypcik: GML (stringsplit) kod = argument0; tab = argument1; for ( i = 0; i < string_count(" ",kod)+1; i += 1 ) { variable_local_array_set( tab, i, "" ) } a = 0; for ( i = 0; i < string_length( kod )+1; i += 1 ) { if ( string_char_at( kod, i ) != " " ) { execute_string( string(tab)+"["+string(a)+"] += string_char_at( kod,"+string(i)+");"); } else { a += 1; } } return (a); Zwraca liczbę wyrazów ( zero też się liczy :D ) i tworzy tablicę w której będą oddzielnie wyraz. string_split( string, "nazwa tablicy" ); przykład użycia: GML (create) tekst = "abc def ghi"; wyrazy = string_split( tekst, "tablica" ); // draw: draw_text( 10, 10, tablica[wyrazy] ); //ostatni wyraz</span></span></span> Enjoy ;) (za użycie nie potrzeba kredków:P) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 Wydaje mi się, że widziałem już coś takiego na GMClanie. Jeżeli nie - zwracam honor, ale w kilka sekund można to znaleźć na google pisząc "gml string explode". EDIT: Dodatkowo ten twój kod trochę mało wydajny :P Nie lepiej skorzystać z string_pos, string_copy i string_delete ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 GM ma dziwne problemy z zwracaniem tablic, przynajmiej ja tak miałem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 Kwasiasty trochę ten kod, muli. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 Dziwisz się, jak Crack zrobił pętle powtarzającą się tyle razy ile znaków w stringu ? :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 Nie dziwię się, bez odpalenia tego wiem, że muli. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 Wszystkie variable_* są mulaste... :P Już lepiej to do jakieś zmiennej zapisać, lub po prostu zwrócić tablicę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pental Stary Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 Ech, teraz za takie coś ludzie creditsów wymagają? Pff :/ ... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 (za użycie nie potrzeba kredków:P) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pental Stary Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 Nobody, właśnie o to mi chodzi... Jak można by było za takie coś creditsy dawać :o ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 7 Maja 2009 Autor Udostępnij Opublikowano 7 Maja 2009 Nobody, właśnie o to mi chodzi... Jak można by było za takie coś creditsy dawać :o ?No i po co spamujesz? Przecież pisze że NIE trzeba <_< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 On chyba uznał, że to jest na tyle oczywiste, że nie trzeba pisać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 7 Maja 2009 Udostępnij Opublikowano 7 Maja 2009 GML // explode( separator, string, variable ) var _code, _count, _position, _string; _code = ''; _count = 0; while( true ) { _position = string_pos( argument[0], argument[1] ); if( _position == 0 ) { _position = string_length( argument[1] ); if( _position == 0 ) break; _string = argument[1]; } else _string = string_copy( argument[1], 1, _position - 1 ); _code += argument[2] + '[' + string( _count ) + ']="' + string_replace_all( _string, '"', '"+chr(34)+"' ) + '";'; argument[1] = string_delete( argument[1], 1, _position ); _count += 1; } if( _count > 0 ) execute_string( _code ); return _count; O. EDIT Kolejna alternatywa: GML // explode( separator, string, variable ) var _count; _count = string_count( argument[0], argument[1] ) + 1; if( argument[0] != '"' ) argument[1] = string_replace_all( argument[1], '"', '"+chr(34)+"' ); argument[1] = string_replace_all( argument[1], argument[0], '";i+=1;' + argument[2] + '="' ); execute_string( 'var i;i=0;' + argument[2] + '="' + argument[1] + '";' ); return _count; 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ę