nowy_user Opublikowano 23 Maja 2019 Udostępnij Opublikowano 23 Maja 2019 Witajcie, Tworzę aplikację, w której do tej pory miałem zaimplementowany system savów oparty na pliku ini zawierającym szereg zmiennych, które były zaczytywane przy kolejnym uruchomieniu aplikacji. Jak wiecie przy użyciu funkcji ini_read_string oraz ini_read_real podajemy 3 wartości: (section, key, default). Ta ostatnia - default - jest prawdziwym zbawieniem, ponieważ w przypadku braku możliwości zaczytania danej wartości ( np. Z powodu usunięcia pliku, albo co bardziej istotne - z powodu aktualizacji aplikacji, gdzie dochodzą nowe zmienne) przypisuje wartość którą sobie ustalimy wcześniej. Działało to wyśmienicie i byłem zadowolony z mojego systemu. Muszę ten system jednak zmienić, ponieważ chce przechowywać dane w chmurze, i najlepszy do tego jest skorzystanie z ds_map i wygenerowanie stringa json. Problem pojawia się, gdy próbuję odczytać dane. Po użyciu funkcji json_decode otrzymujemy ds_mapę, z której możemy dowolnie sczytywać zmienne, ale niestety funkcja ds_map_find_value(id,key) , nie daje możliwości wpisania zmiennej default. Okazuje się, że gdy nie uda się znaleźć danego ‘key’ to przypisana wartość to ‘undefined’ co ma druzgocące skutki i potem crashuje aplikację. I teraz pytanie, czy ja muszę ręcznie , po wczytaniu zmiennych pozmieniać wszystkie ‘undefined’ czyli napisać kod w stylu: var _default=0; If zmienna1 == null zmienna = _default; If zmienna2 == null zmienna2 = _default; If zmienna3 itd.. Czy może jest jakiś szybszy sposób na przypisanie domyślnej wartości dla zmiennej, która nie znalazła ‘keya’ przy wyszukiwaniu z mapy? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 23 Maja 2019 Administratorzy Udostępnij Opublikowano 23 Maja 2019 Nie jestem pewien i nie mogę teraz sprawdzić, bo jestem na linuxie, ale zrób taki skrypt: /// SKRYPT: ds_map_find_value_default(id, key, default) var _result = ds_map_find_value(argument0, argument1); if (is_undefined(_result)) return argument2; return _result; nowy_user i Konrad-GM 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 23 Maja 2019 Autor Udostępnij Opublikowano 23 Maja 2019 Działa, że też na to sam nie wpadłem Dzieki Gnysek ! gnysek 1 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ę