yokoon napisał: Jest to kod z Pana Wiązani być może nieudolnie przerobiony.
Oryginał ma tak:
Dim licz_8ms As Byte
Incr Licz_8ms
If Licz_8ms = 125 Then
.............
I to działa, czyli ja nie mogę używać liczby stałoprzecinkowej.
No dokładnie. To działa tylko dla Byte (i podobnych).
yokoon napisał: Chociaż typ danych Single mówi, iz może przyjmować wartości stało i zmiennoprzcinkowe.
Chyba, że źle to rozumiem.
Dobrze rozumiesz (tzn. zgodnie z wyjaśnieniem). Tyle że wyjaśnienie jest złe.
BASCOM po prostu nie ma typu stałoprzecinkowego. Co najwyżej liczbę którą Ty uznajesz za stało przecinkową, możesz mu podać. Ale on ją przerobi na zmiennoprzecinkową.
Acha, i jeszcze jedna sprawa. Bo Ty chyba masz jakiś problem ze zrozumieniem zmiennej stałoprzecinkowej. To nie jest zmienna całkowita (Byte, Integer).
Owszem można powiedzieć mają one przecinek w stałym miejscu (w takim że liczba cyfr po przecinku jest równa 0

), ale przyjęło się uznawać że zmienne stałoprzecinkowe to jednak takie gdzie jest chociaż jedna cyfra po przecinku.
Zatem zmienne całkowite się tutaj nie mieszczą.
Dodatkowo nie można użyć typu Single nawet jeżeli będziesz tam wpisywał tylko liczby całkowite. Bo typ Single nie rozróżnia liczb. Ty jako człowiek to widzisz ale on nie. Zatem tak jak pisałem porównania typu Zmienna_Single = 125 nie będą działały (tzn. będą ale żadko kiedy zmienna naprawdę będzie równa dokładnie 125).
Jeszcze jednak rzecz mnie ciekawi.
Zadeklarowałeś zmienną Licz_0 . 007987ms
O następnie robisz:
Zaloguj się, aby zobaczyć kod
Czyżbyś chciał aby ta zmienna zwiększała się o 0.007987 przy każdym poleceniu Incr? (wtedy zwiększy się do 125 właśnie po wpływie 1 sekundy tak jak napisałeś w komentarzu)
No niestety to nie zadziała.
Nazwa zmiennej nie mówi o ile się ona będzie zwiększała przy poleceniu Incr
Incr to Incr. Zawsze zwiększa o 1 (o ile w ogóle to działa dla typu Single).
Jeżeli już to musiał byś napisać tak:
Zaloguj się, aby zobaczyć kod
Ale oczywiście dalej to bez sensu bo lepiej zwiększać zmienną typu Integer.