powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Компилятор не предупреждает об ошибке сравнения переменных String и Integer
25 сообщений из 32, страница 1 из 2
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34189671
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Command1_Click()
Dim var_str As String
Dim var_itg As Integer
var_str = "ТРПР"
var_int =  666 
If var_str <> var_int Then
    MsgBox "НЕ РАВНО"
End If
End Sub
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34189729
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В бэйсике с этим всё в порядке, а вот в дельфе бы такое не прокатило. там бы надо было преобразовывать integer в string.
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34189766
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только Delphi предупреждает об ошибке?
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34189847
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
об ошибке не предупреждает и варинги не дает, а вот если ошибка будет, то тогда вылетит
есть другой вариант - Val

аффтопитезь
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34189850
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кроме delphi и бейсика ничего не пробовала.
пусть напишут те, кто другие языки пробовал.
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34189857
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настенькакроме delphi и бейсика ничего не пробовала.
пусть напишут те, кто другие языки пробовал.

в других языках сделано гораздо приличней, и долговременная операция конвертации делается только вручную.

а VB- это так..., залетно
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34189945
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наскольк я знаю, visual basic - это единственный язык который настолько умен.
Правда цена за это - пресловутый оператор Set.
Все другие basic-и, и вообще другие языки сами не выполняют такие сложные преобразования типов.
Даже SQL.
Надо всегда помнить про закулисные преобразования типов и когда потребуется - "помочь" компилятору VB.
Можно бы изучить все правила по которым работают вариантные переменные, но лучше просто приводить явно к одному типу оба операнда в проверке условия.
Строгая типизация языков - это хорошо, но все равно приходится иметь дело с преобразованиями типов которые только в ран-тайме дадут ошибки. Например, преобразовать строку из файла или из контрола в дату или число. У вас могут быть две записи в текстовой строке, хранящие одинаковые данные, но различные по тексту.
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34190065
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне бы хотелось, что бы компилятор не дал бы создать exe файл, пока не будут исправлены подобные ошибки. Настенька подсказывает, что Delphi - такой язык. А кроме Delphi ? Какие ещё компиляторы предупредупреждают такие ошибки ?
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34190864
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
klen_Мне бы хотелось, что бы компилятор не дал бы создать exe файл, пока не будут исправлены подобные ошибки. Настенька подсказывает, что Delphi - такой язык. А кроме Delphi ? Какие ещё компиляторы предупредупреждают такие ошибки ?

великий и ужасный си.
(если ты вообще понимаешь, что пишешь, то рабооать будет)
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34190891
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А С ++?
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34191091
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
klen_А С ++?

см. пост выше

паскаль еще (но делфя - его следующая модель эволюции)
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34191366
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
klen_

Если поставить Option Explicit, то сразу окажется, что вы забыли отдекларировать переменную var_int.

Отдекларируйте ее, и тогда Компилятор сразу начнет предупреждать об ошибке сравнения переменных String и Integer:

Run-time error '13':
Type mismatch.

Настенька,

В бэйсике с этим всё в порядке, но не в том смысле, как вы думаете.

Всем успехов.

VladConn
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34191656
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnОтдекларируйте ее, и тогда Компилятор сразу начнет предупреждать об ошибке сравнения переменных String и Integer:Эээ... Option Explicit отвечает все-таки за обязательную декларацию, но никак не за сравнение.
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34191781
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и что?

Там товарищ выдавал Variant за Integer, не осознавая этого, как раз из-за отсутствия Option Explicit. И сравнение проскальзывало без проблем как раз из-за отсутствия Option Explicit. Ведь Variant принимает любой тип. Т.е. косвенно именно отсутствие Option Explicit привело к невыявлению ошибки несоответствия типов. Несоответствия типов просто не было . А с Option Explicit было бы. И какая разница: в процессе сравнения или вычитания со сложением.

Visual Basiс может простить какую-то небрежность при, например, конкатенации строк и чисел, преобразуя "сумму" в новую строку, это да. Меня лично такая небрежность раздражает, и я всегда стараюсь преобразовывать типы сам, не полагаясь на компилятор. По-крайней мере, это демонстрирует осознанность действий кодирующего и его сознательность. По этой же причине я никогда не использую знак "+" при конкатенации строк, а только "&". Tогда если попадутся числа, а не строки, пусть по очень маловероятной причине, то сложения не произойдет.

VladConn
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34191969
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне вот этот option explicit вообще раздражает.
надо все переменные объявлять. без него всё хорошо работает.
вспоминаю дельфю, делали курсовик по математике, так там floattostr, strtofloat, inttostr, strtoint были чуть ли не в две строки. выглядело всё очень некрасиво и нечитаемо.
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34192020
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnЕсли поставить Option Explicit, то ...
Указал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Option Explicit
Private Sub Command1_Click()
Dim var_str As String
Dim var_itg As Integer
var_str = "ТРПР"
var_itg =  666 
If var_str <> var_itg Then
    MsgBox "НЕ РАВНО"
End If
End Sub
Одна ошибочка исправилась, а на сравнение компилятор как не ругался, так и не ругается.
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34192048
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прекрасно он ругается, пишет type mismatch - несовпадение типов.
сейчас то что не так?
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34192235
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настенькамне вот этот option explicit вообще раздражает.

5 баллов!

Worobjoff
Все другие basic-и, и вообще другие языки сами не выполняют такие сложные преобразования типов.
Даже SQL.
Вы не правы, T-SQL тоже выполняет сам такие преобразования. А вот PL/SQL - нет.

klen_Настенька подсказывает, что Delphi - такой язык.
Настенька ошибается, Delphi - это не язык, а среда программирования.
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34192384
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnНу и что?

Там товарищ выдавал Variant за Integer, не осознавая этого, как раз из-за отсутствия Option Explicit. И сравнение проскальзывало без проблем как раз из-за отсутствия Option Explicit. Ведь Variant принимает любой тип. Т.е. косвенно именно отсутствие Option Explicit привело к невыявлению ошибки несоответствия типов. Несоответствия типов просто не было. А с Option Explicit было бы. И какая разница: в процессе сравнения или вычитания со сложениемТогда уж объявить как Integer , а не просто объявить . ;)
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34192955
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я говорю, компилятор не ругается, когда создаю exe файл - не ругается. А то что в момент выполнения выходит сообщение type mismatch это уже любой язык, среда, интерпретатор, об этом скажет.
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34192987
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А откуда компилятору знать какой диапазон значений может принять переменная? Может сравнение прокатит: 111 = "222"; а может и нет: 111 = "ааа".
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34193319
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkiades ошибается, Delphi - это именно язык, по крайней мере, производитель несколько лет об этом говорит.

klen_,
Вообще разговор бессмысленный. У каждого языка свои правила преобразования типов, чем сложнее язык, тем сложнее правила. У VB они простые. ПишИте на Аде, там проверки типов жестокие. :)
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34193805
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БенедиктMelkiades ошибается, Delphi - это именно язык, по крайней мере, производитель несколько лет об этом говорит.

Прошу прощения, мы оба оказались правы. Просто я перестал следить за Borland.

Delphi — язык программирования, ранее известный как Object Pascal,
разработанный фирмой Borland и изначально реализованный в её пакете Borland Delphi,
от которого и получил в 2003 году своё нынешнее название.
По сути является наследником языка Pascal с объектно-ориентированными расширениями.
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34193871
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy:

"...Тогда уж объявить как Integer , а не просто объявить. ;) ..."

Так само собой. Здесь же форум по VB, а не домохозяек.

Настенька:

"...мне вот этот option explicit вообще раздражает.
надо все переменные объявлять. без него всё хорошо работает...
"

Вы много потеряли в моих глазах, Настенька. Вы вот еще без тормозов машину поводите. С ними так все тормозится...

:0)

VladConn
...
Рейтинг: 0 / 0
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
    #34193973
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"... А откуда компилятору знать какой диапазон значений может принять переменная? Может сравнение прокатит: 111 = "222"; а может и нет: 111 = "ааа "."

Компилятор конечно такого знать не может. Но вот сама среда, где пишется код, в принципе должна бы не допускать смешения типов. Здесь klen_ прав. И Microsoft в курсе этого пробела. В VB.NET добавлена Option Strict On, что и заполняет досадный пробел. Вот что там происходит как только впечатывается код: Option Strict On disallows implicit conversions from 'String' to 'Double'.

Но это уже не для Настеньки ;0)
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Компилятор не предупреждает об ошибке сравнения переменных String и Integer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]