Dziwne zachowanie procedury Val

0

Przy przejściu programu przez linię
Val(s,n,kod);
gdy s='X' otrzymuję n=0, ale kod=3, a powinien być 1.
s jest typu string, n oraz kod typu integer.

Czy ktoś ma jakiś pomysł, dlaczego tak się dzieje?
Czy są jeszcze inne takie pułapki?

0

Dzieje się ponieważ są różne sposoby zapisu liczb. Może to być liczba ze znakiem (spróbuj dać "+" albo "-" ), w systemie hexadecymalnym (przedrostek "$", "x", "0x", lub zapis naukowy ("e")
Jednak pozycja błędnego znaku jest nieprawidłowa przykładowo dla "x" zwraca 3 podczas gdy wydaje mi się, że to powinno być 2 (bo nie ma 2 znaku, który miał być wystąpić po przedrostku zapisu hexadecymalnego) lub normalnie 1 (już pierwszy znak jest nieprawidłowy). Trzeba by napisać jakaś funkcję obudowującą Val i korygującą zwracane wartości gdy na początku stringa występują wspomniane znaki biorąc pod uwagę zarówno małe jak i duże litery.

0

Ciekawa sprawa.

Jak damy n:Real to już jest dobrze.

0

Dziękuję! Chciałem przy użyciu procedury Val podzielić string na kawałki, na zmianę liczba-nieliczba. Przy niektórych stringach zawierających literę 'X' wszystko się sypało. Teraz trochę zmodyfikowałem i cel osiągam ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1