Skocz do zawartości

MAXSCRIPT ascii


Rekomendowane odpowiedzi

Napisano (edytowane)

Hej

 

Znow mam problem :)

 

Potrzebuje sie dowiedziec w maxscripcie czy dana zmienna jest liczba. W teorii wiem ze "chyba" powinienem sobie taka zmienna zamienic na kod ascii i zobaczyc czy to co dostane spelnia warunek ((zmienna > 0) and (zmienna

 

Podsumowujac to jak sprawdzic czy dana zmienna to liczba?

Edytowane przez ant-3d
  • Odpowiedzi 3
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Napisano

"warunek ((zmienna > 0) and (zmienna

 

Maxscript ma hierarchię typów - typy liczbowe mają bazową klasę Number. Poza tym maxscript ma refleksje i można sprawdzić czy zmienna jest liczbą:

x = 666

IsKindOf x Number

"IsKindOf x Number" zwróci true zarówno gdy x będzie Integer jak i Float, ponieważ dziedziczą one z Number.

 

Tak w ogóle to poza światem Maxscript (ten język jest dla mnie "marginesem") ludzie zawracają sobie głowę tym żeby nie korzystać z refleksji i instrukcji warunkowych.

Napisano (edytowane)

Dzieki wielkie, o to chodzilo :) Tyle razy juz kopalem po helpie i nie znalazlem tego isKindOf.

 

EDIT:

 

no dobra rowiazalo mi to problem polowicznie. Powiedzmy teraz ze mam taka zmienna:

 

x = "3"

 

jesli zapytam sie teraz isKindOf x Number to oczywiscie dostane false. To sie zgadze bo to jest string. Gdyby x = 3 to wowczas bylby integer. Pytanie:

 

Majac zmienna x = "3" jako string jak moge sprawdzic czy moge ja sobie zkastowac na integera??

 

EDIT2:

 

No dobra rozwiazalem sobie problem. Moze komus sie tez przyda:

 

check_it = "3"
if (((bit.charAsInt check_it) > 47) and ((bit.charAsInt check_it) (
   x = check_it as integer
   -- mamy integera bo zostal spelniony powyzszy warunek
   -- czyli "3" zamienilem na kod ascii a w kodzie ascii cyfry sa od 48 do 57
)

Edytowane przez ant-3d
Napisano
-- zwraca undefined jesli nie mozna skonwertowac argumentu na number
-- zwraca wynik konwersji jesli uda sie skonwertowac argument na number

fn ToNumber _value = (
   foundValue = undefined
   if (iskindof _value Number) == true do foundValue = _value
   if foundValue == undefined do (
       try(
           tmpval = execute _value
           if (iskindof tmpval Number) == true do foundValue = tmpval
       )catch(format "Error Converting To Number. value:% exception:%\n" tmpval (getcurrentexception()))
   )
   return foundValue
)

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ę



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności