#post-id: 8134-20-39
#original-date: 2.11.2022 Wed
#original-time: 8:39 PM
#original-day: 8134
#original-host: WinXP Home SP3 (Build 2600)
http://vbstreets.ru/VB/Articles/66541.aspx
Почитала статью – ужаснулась. Открыла VB, написала программу по образу и подобию – снова ужаснулась. Исправила ошибку в коде автора статьи – поняла, что миру угрожают в первую очередь не числа с плавающей точкой, а рукожопы.
Ах, да. Код, написанный, как в статье, у меня падал с ошибкой. Ведь в начале модулей я всегда пишу «DefObj A-Z».
Короче, там написано «Dim a, c As Single», что не объявляет две переменных с типом Single, а объявляет первую переменную с типом по умолчанию, а вторую – с типом Single, ведь в VB у каждого имени должен быть указан тип. Указание одного типа для пачки имён не работает. Тоесть, должно быть написано «Dim a As Single, c As Single». Поскольку тип по умолчанию – Variant, первая переменная с ним и объявлась. А при присвоении ниже в Variant попал тип Double. Ну, вот так делает VB: для целых чисел выбирает в зависимости от размера Integer или Long, а для тех, что с точкой – сразу Double. Ну и получилось, что дальнейшая арифметика была не с положением переменных, а с их типом.
В моём варианте первая переменная сделалась типа Object, поскольку он и задаётся по умолчанию, и первое же присовение поломалось. Очень полезно при отлавливании ошибок не заданных типов.
А ещё полезно каждубю переменную объявлять на отдельной строке.