Exigo Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 Jedyny 'tryb', w jakim potrafię poruszać się w plikach txt za pomocą game makera to wczytywanie wartości liczbowej, po czym przeskakiwanie do następnej linijki. Coś w tym stylu: 123 45 6553 Jak więc operować na tekście który wygląda mniej więcej tak? [123,45,6553] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 Wczytaj linijkę i rozłóż stringa na części ze względu na kropkę. Niedawno zakładałem temat o explode. Jak już porozkładasz to zamień na liczbę funkcją real(). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 Plik file.txt [a,b,[c,d,e,f],g,h,i,[jkl]] Odczyt pliku GML handle = file_bin_open( 'file.txt', 0 ); size = file_bin_size( handle ); position = 0; level = 0; lists[0] = ds_list_create(); buff = ''; while( position < size ) { char = chr( file_bin_read_byte( handle ) ); position += 1; if( char == '[' ) { if( buff != '' ) { ds_list_add( lists[level], buff ); buff = ''; } level += 1; lists[level] = ds_list_create(); } else if( char == ']' ) { if( buff != '' ) { ds_list_add( lists[level], buff ); buff = ''; } level -= 1; if( level >= 0 ) ds_list_add( lists[level], lists[level+1] ); } else if( level >= 0 ) { if( char == ',' ) { if( buff != '' ) { ds_list_add( lists[level], buff ); buff = ''; } } else buff += char; } } file_bin_close( handle ); Przykładowe rysowanie GML (vardump) var s, i, v; s = ''; for( i = 0; i < ds_list_size( argument0 ); i += 1 ) { v = ds_list_find_value( argument0, i ); if( s != '' ) s += ','; if( is_real( v ) ) s += vardump( v ); else if( is_string( v ) ) s += v; } return '[' + s + ']'; GML draw_text( 0, 0, vardump( lists[0] ) ); Z zagnieżdżaniem, tak dla picu. Swoją drogą nie polecam tego typu zapisu, strasznie niewygodny do odczytu. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 11 Kwietnia 2010 Autor Udostępnij Opublikowano 11 Kwietnia 2010 Czyli swoją drogą jednak zostanę przy tym skakaniu po linijkach. Teraz zmiana topic'a, z tej samej dziedziny, ale pod innym kątem. Czemu wartość zapisana w sposób: 0,0000 140,0000 92,0000 39,0000 Wita nas błędem "Error reading real.", w przeciwieństwie do: 0 140 92 39 Interesujące jest to że po 'zignorowaniu' potoku dane zostały wczytane prawidłowo. ; d Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 Zamień "," na ".", powinno działać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 11 Kwietnia 2010 Autor Udostępnij Opublikowano 11 Kwietnia 2010 Masz rację, działa, ale program 'zapisuje' dane właśnie w taki sposób. Istnieje możliwość - już w procesie zapisywania - zmieniać przecinki na kropki? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 GML file_text_write_string( handle, string( number ) );Choć to ograniczona dokładność. EDIT W sumie odczyt też ma ograniczoną dokładność do 2 cyfr po przecinku. Ja proponuję przejść na zapis binarny. Mogę Ci wytłumaczyć jak to się robi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 11 Kwietnia 2010 Autor Udostępnij Opublikowano 11 Kwietnia 2010 O, działa. Dokładność szczegółem. Zawsze można pomnożyć, by potem podzielić. ; d Dziękować. Edit: Co do tego zapisu binarnego - proponujesz ponieważ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 Ponieważ to wygodniejsza metoda, optymalniejsza z powodu mniejszych rozmiarów pliku i prędkości zapisu/odczytu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 11 Kwietnia 2010 Autor Udostępnij Opublikowano 11 Kwietnia 2010 Pewnie będzie przez to chaos w kodzie, ale ok, pokaż o co w tym biega. ; d Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 12 Kwietnia 2010 Udostępnij Opublikowano 12 Kwietnia 2010 https://gmclan.org/up152_11_bin_files.html Trochę chaotycznie, ale... ;) 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ę