^#$PAUL$#^ Opublikowano 12 Sierpnia 2011 Udostępnij Opublikowano 12 Sierpnia 2011 Mam taki oto kod: GML file_text_open_read("dane.txt"); tekst=file_text_read_string(1); for(i=1; i>30; i=i+1) { poz=string_copy(tekst,0,string_pos(".",tekst)); poz=string_replace(poz,".",""); zawodnik=string_copy(tekst,6,25); kraj=string_copy(tekst,31,3); zawodnicy=i; wyn=i; tekst=""; file_text_readln(1); tekst=file_text_read_string(1); } file_text_close(1); for (i=1; i==30; i+=1) { poz=real(poz); } I wszystko jest ok. Problem pojawia się dopiero gdy chcę wyświetlić którąś ze zmiennych albo zapisać ją do pliku np. w taki sposób: GML file_text_open_append("wynik.txt"); file_text_write_string(1,zawodnik[1]); . Wyskakuje wtedy błąd: ERROR in action number 1 of Create Event for object object1: Error in code at line 26: file_text_write_string(1,zawodnik[1]); ^ at position 27: Unknown variable zawodnik or array index out of bounds Wygląda to tak jakby pętla się nie wykonywała (bo np. dając w klocku draw variable "string_copy(tekst,6,25);" wyświetla się poprawnie), a ja nie wiem z jakiego powodu :( Jest to dziwny błąd a ja po raz setny go widząc mam zamiar wyrzucić komputer przez okno. Proszę o pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 12 Sierpnia 2011 Udostępnij Opublikowano 12 Sierpnia 2011 for(i=1; i>30; i=i+1) Fail! Zamień to na: GML for( i = 0; i < 30; i += 1; ) A tablice indeksujemy od zera do n-1! Kolejny fail: for (i=1; i==30; i+=1) Zamień to na powyższy kod. A gdybyś był sprytniejszy, wstawiłbyś kod "poz=real(poz);" do pętli powyżej, bo są identyczne... Ten kod na każdym kroku jest chory. Do zapisu używasz: GML file_text_open_append("wynik.txt"); To używaj także do odczytu, albo zachowaj konsekwencję, i do jednego używaj _read, a do drugiego _write. Samej pętli for zamiast while i funkcji eof także nie rozumiem. Gdybym tylko pamiętał operacje na plikach w GMie, wymieniłbym wszystkie błędy. Wierz mi, występują one na każdym kroku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
^#$PAUL$#^ Opublikowano 12 Sierpnia 2011 Autor Udostępnij Opublikowano 12 Sierpnia 2011 tak wiem, że indeksujemy od zera, ale w innych aplikacjach działało więc pomyślałem, że nie ma to znaczenia :) jedynie znak różności był tu źle odwrócony :D zapomniałem że ten warunek w pętli for mósi być spełniony aby się wykonywała :bash: , myślałem, że pętla się kończy jak warunek zostanie spełniony . Taka mała skleroza ;) dzięki :thumbsup: a co do operacji na plikach i wszytkiego innego to wszystko działa . uwież mi przegryzałem się przez to wszystko :) i gdzie tam funkcja eof ? 0_o Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 12 Sierpnia 2011 Udostępnij Opublikowano 12 Sierpnia 2011 zapomniałem że ten warunek w pętli for mósi być spełniony aby funkcja się wykonywała , myślałem, że pętla się kończy jak warunek zostanie spełniony . Większej głupoty / sprzeczności / wymówki w życiu nie słyszałem. Nie miałoby to sensu. A tablice należy indeksować od zera, bo indeks zerowy oznacza pierwszy element. a co do operacji na plikach i wszytkiego innego to wszystko działa . uwież mi przegryzałem się przez to wszystko Przecież ja ci nie muszę wierzyć, bo jestem świadomy, co ten kod robi. Tylko, że nie rozumiem, dlaczego do samego zapisu używasz file_text_open_append... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
^#$PAUL$#^ Opublikowano 12 Sierpnia 2011 Autor Udostępnij Opublikowano 12 Sierpnia 2011 to powiedz mi jakie to ma tu znaczenie? nie ma żadnego ! poprostu element o indeksie 0 w każdej tablicy jest pusty i jak nie będe sie do niego odwoływać to napewno nie wystąpi błąd :) a używam tablic od 1 , bo wczytuje wyniki z DSJ i ciężko żeby ktoś zajął zerowe miejsce. Tak jest dla mnie łatwiej i czytelniej. mnie nie obchodzi to, że używam złej funkcji . Ważne jest tylko to, że wszystko działa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 12 Sierpnia 2011 Udostępnij Opublikowano 12 Sierpnia 2011 to powiedz mi jakie to ma tu znaczenie? nie ma żadnego ! poprostu element o indeksie 0 w każdej tablicy jest pusty i jak nie będe sie do niego odwoływać to napewno nie wystąpi błąd :) a używam tablic od 1 , bo wczytuje wyniki z DSJ i ciężko żeby ktoś zajął zerowe miejsce. Tak jest dla mnie łatwiej i czytelniej. mnie nie obchodzi to, że używam złej funkcji . Ważne jest tylko to, że wszystko działa. Ważne jest to, że przez to twój kod jest mniej optymalny i wydajny. A w GMie obydwie te cechy są na wagę złota. a używam tablic od 1 , bo wczytuje wyniki z DSJ i ciężko żeby ktoś zajął zerowe miejsce. Ale indeks zerowy oznacza pierwszy element... Matko, ile można to tłumaczyć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 12 Sierpnia 2011 Administratorzy Udostępnij Opublikowano 12 Sierpnia 2011 Może przyzwyczajenie z PHP, gdzie napisanie $x[5] nie oznacza przypisania innych indeksów tablicy (choć rzeczywista reprezentacja tej tablicy w pamięci to i tak zerowy indeks...) 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ę