|
|
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 12:02 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
В бэйсике с этим всё в порядке, а вот в дельфе бы такое не прокатило. там бы надо было преобразовывать integer в string. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 12:16 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Только Delphi предупреждает об ошибке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 12:24 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
об ошибке не предупреждает и варинги не дает, а вот если ошибка будет, то тогда вылетит есть другой вариант - Val аффтопитезь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 12:43 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
кроме delphi и бейсика ничего не пробовала. пусть напишут те, кто другие языки пробовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 12:43 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Настенькакроме delphi и бейсика ничего не пробовала. пусть напишут те, кто другие языки пробовал. в других языках сделано гораздо приличней, и долговременная операция конвертации делается только вручную. а VB- это так..., залетно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 12:44 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Наскольк я знаю, visual basic - это единственный язык который настолько умен. Правда цена за это - пресловутый оператор Set. Все другие basic-и, и вообще другие языки сами не выполняют такие сложные преобразования типов. Даже SQL. Надо всегда помнить про закулисные преобразования типов и когда потребуется - "помочь" компилятору VB. Можно бы изучить все правила по которым работают вариантные переменные, но лучше просто приводить явно к одному типу оба операнда в проверке условия. Строгая типизация языков - это хорошо, но все равно приходится иметь дело с преобразованиями типов которые только в ран-тайме дадут ошибки. Например, преобразовать строку из файла или из контрола в дату или число. У вас могут быть две записи в текстовой строке, хранящие одинаковые данные, но различные по тексту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:03 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Мне бы хотелось, что бы компилятор не дал бы создать exe файл, пока не будут исправлены подобные ошибки. Настенька подсказывает, что Delphi - такой язык. А кроме Delphi ? Какие ещё компиляторы предупредупреждают такие ошибки ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:27 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
klen_Мне бы хотелось, что бы компилятор не дал бы создать exe файл, пока не будут исправлены подобные ошибки. Настенька подсказывает, что Delphi - такой язык. А кроме Delphi ? Какие ещё компиляторы предупредупреждают такие ошибки ? великий и ужасный си. (если ты вообще понимаешь, что пишешь, то рабооать будет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 16:31 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
А С ++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 16:36 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
klen_А С ++? см. пост выше паскаль еще (но делфя - его следующая модель эволюции) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 17:21 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
klen_ Если поставить Option Explicit, то сразу окажется, что вы забыли отдекларировать переменную var_int. Отдекларируйте ее, и тогда Компилятор сразу начнет предупреждать об ошибке сравнения переменных String и Integer: Run-time error '13': Type mismatch. Настенька, В бэйсике с этим всё в порядке, но не в том смысле, как вы думаете. Всем успехов. VladConn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 18:32 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
VladConnОтдекларируйте ее, и тогда Компилятор сразу начнет предупреждать об ошибке сравнения переменных String и Integer:Эээ... Option Explicit отвечает все-таки за обязательную декларацию, но никак не за сравнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 21:13 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Ну и что? Там товарищ выдавал Variant за Integer, не осознавая этого, как раз из-за отсутствия Option Explicit. И сравнение проскальзывало без проблем как раз из-за отсутствия Option Explicit. Ведь Variant принимает любой тип. Т.е. косвенно именно отсутствие Option Explicit привело к невыявлению ошибки несоответствия типов. Несоответствия типов просто не было . А с Option Explicit было бы. И какая разница: в процессе сравнения или вычитания со сложением. Visual Basiс может простить какую-то небрежность при, например, конкатенации строк и чисел, преобразуя "сумму" в новую строку, это да. Меня лично такая небрежность раздражает, и я всегда стараюсь преобразовывать типы сам, не полагаясь на компилятор. По-крайней мере, это демонстрирует осознанность действий кодирующего и его сознательность. По этой же причине я никогда не использую знак "+" при конкатенации строк, а только "&". Tогда если попадутся числа, а не строки, пусть по очень маловероятной причине, то сложения не произойдет. VladConn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 22:54 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
мне вот этот option explicit вообще раздражает. надо все переменные объявлять. без него всё хорошо работает. вспоминаю дельфю, делали курсовик по математике, так там floattostr, strtofloat, inttostr, strtoint были чуть ли не в две строки. выглядело всё очень некрасиво и нечитаемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 05:21 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
VladConnЕсли поставить Option Explicit, то ... Указал Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 07:38 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Прекрасно он ругается, пишет type mismatch - несовпадение типов. сейчас то что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 08:04 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Настенькамне вот этот option explicit вообще раздражает. 5 баллов! Worobjoff Все другие basic-и, и вообще другие языки сами не выполняют такие сложные преобразования типов. Даже SQL. Вы не правы, T-SQL тоже выполняет сам такие преобразования. А вот PL/SQL - нет. klen_Настенька подсказывает, что Delphi - такой язык. Настенька ошибается, Delphi - это не язык, а среда программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 09:54 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
VladConnНу и что? Там товарищ выдавал Variant за Integer, не осознавая этого, как раз из-за отсутствия Option Explicit. И сравнение проскальзывало без проблем как раз из-за отсутствия Option Explicit. Ведь Variant принимает любой тип. Т.е. косвенно именно отсутствие Option Explicit привело к невыявлению ошибки несоответствия типов. Несоответствия типов просто не было. А с Option Explicit было бы. И какая разница: в процессе сравнения или вычитания со сложениемТогда уж объявить как Integer , а не просто объявить . ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 10:41 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Я говорю, компилятор не ругается, когда создаю exe файл - не ругается. А то что в момент выполнения выходит сообщение type mismatch это уже любой язык, среда, интерпретатор, об этом скажет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 12:57 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
А откуда компилятору знать какой диапазон значений может принять переменная? Может сравнение прокатит: 111 = "222"; а может и нет: 111 = "ааа". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 13:04 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Melkiades ошибается, Delphi - это именно язык, по крайней мере, производитель несколько лет об этом говорит. klen_, Вообще разговор бессмысленный. У каждого языка свои правила преобразования типов, чем сложнее язык, тем сложнее правила. У VB они простые. ПишИте на Аде, там проверки типов жестокие. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 14:11 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
БенедиктMelkiades ошибается, Delphi - это именно язык, по крайней мере, производитель несколько лет об этом говорит. Прошу прощения, мы оба оказались правы. Просто я перестал следить за Borland. Delphi — язык программирования, ранее известный как Object Pascal, разработанный фирмой Borland и изначально реализованный в её пакете Borland Delphi, от которого и получил в 2003 году своё нынешнее название. По сути является наследником языка Pascal с объектно-ориентированными расширениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:00 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Antonariy: "...Тогда уж объявить как Integer , а не просто объявить. ;) ..." Так само собой. Здесь же форум по VB, а не домохозяек. Настенька: "...мне вот этот option explicit вообще раздражает. надо все переменные объявлять. без него всё хорошо работает... " Вы много потеряли в моих глазах, Настенька. Вы вот еще без тормозов машину поводите. С ними так все тормозится... :0) VladConn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:13 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
"... А откуда компилятору знать какой диапазон значений может принять переменная? Может сравнение прокатит: 111 = "222"; а может и нет: 111 = "ааа "." Компилятор конечно такого знать не может. Но вот сама среда, где пишется код, в принципе должна бы не допускать смешения типов. Здесь klen_ прав. И Microsoft в курсе этого пробела. В VB.NET добавлена Option Strict On, что и заполняет досадный пробел. Вот что там происходит как только впечатывается код: Option Strict On disallows implicit conversions from 'String' to 'Double'. Но это уже не для Настеньки ;0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 16:33 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Вы много потеряли в моих глазах, Настенька. Вы вот еще без тормозов машину поводите. С ними так все тормозится... а вы в моих, vladconn. меня тут многие поддержали. и этот option explicit никому не нравится. а машина ничего не тормозит. у каждого своё мнение. не надо других критиковать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 07:03 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Настенькамне вот этот option explicit вообще раздражает. надо все переменные объявлять. без него всё хорошо работает. вспоминаю дельфю, делали курсовик по математике, так там floattostr, strtofloat, inttostr, strtoint были чуть ли не в две строки. выглядело всё очень некрасиво и нечитаемо. НастенькаВы много потеряли в моих глазах, Настенька. Вы вот еще без тормозов машину поводите. С ними так все тормозится... а вы в моих, vladconn. меня тут многие поддержали. и этот option explicit никому не нравится. а машина ничего не тормозит. у каждого своё мнение. не надо других критиковать. Настенька, смею предположить, что вас поддержали люди не искушенные в программировании. Объявление всех используемых переменных является одним из важнейших методов оптимизации кода, т.к. все не объяленные переменные трактуются компилятором как Variant, а Variant обрабатывается в 2-3 раза медленнее, чем тот же Long. Есть много статей на эту тему. Вот первые попавшиеся в google: Оптимизация кода в Visual Basic 88 советов по оптимизации программ на Visual Basic Даже если вы пишете на Delphi, эти советы помогут. klen_Мне бы хотелось, что бы компилятор не дал бы создать exe файл, пока не будут исправлены подобные ошибки. Настенька подсказывает, что Delphi - такой язык. А кроме Delphi ? Какие ещё компиляторы предупредупреждают такие ошибки ? VB6 подобные "ошибки" не отслеживает, впрочем как и ошибки в бизнес-логике :) Если речь идет о том, что надо быстренько навалять код, подчистить его с помощью компилятора и в работу - то это не программирование, а баловство. А если надо написать рабочую программу, то ошибки лучше не допускать: Объявите переменные как Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 10:15 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
По поводу преобразований типов и "умности" VB 6 в этом плане Никогда не забуду поиск одного интересного бага, к-й проявлялся только в трех отделениях одной организации. А все почему ? Вот такое преобразование Код: plaintext Код: plaintext Код: plaintext Соответственно в отделениях с id от 1 до 12 все работало, а начиная с 13-го уже нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 11:03 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
[quot Rustygold] VB6 подобные "ошибки" не отслеживает, впрочем как и ошибки в бизнес-логике :) Если речь идет о том, что надо быстренько навалять код, подчистить его с помощью компилятора и в работу - то это не программирование, а баловство. quot] Совершенно согласен, именно баловство. Мы не являемся фирмой по производству ПО. Это отдел АСУ на заводе, где пользователи требуют чтобы всё было сделано максимально быстро. Им нет никакого дела как написан код и на чём программа сделана. Часто меняют задание, не закончив предыдущее. Поэтому и хочется иметь хороший компилятор. Понятное дело что ни один компилятор не найдёт ошибки в бизнес-логике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 12:28 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
klen_Поэтому и хочется иметь хороший компилятор.Пишите свой ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 12:40 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
klen_Поэтому и хочется иметь хороший компилятор. Хороший компилятор не тот, который умеет выявлять максимальное кол-во ляпов программиста, а тот, на языке которого вам проще писать. Если вы хорошо знаете и VB, и C++, и Delphi, то можно повыбирать. А зная один язык - какая разница какой компилятор ? Достаточно знать его слабые стороны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 12:46 |
|
||
|
Компилятор не предупреждает об ошибке сравнения переменных String и Integer
|
|||
|---|---|---|---|
|
#18+
Настенька, Лучше бы вы это не писали: "... а вы в моих, vladconn. меня тут многие поддержали. и этот option explicit никому не нравится. а машина ничего не тормозит. у каждого своё мнение. не надо других критиковать... " Вы обнаруживаете дремучее непонимание и, что страшно, неприятие основ современного программирования. Конечно, у каждого свое мнение по этому вопросу: у Microsoft и, к примеру, Francesco Balena - свое. У вас - свое. Позиции, безусловно, равны. Я не просто критикую или, упаси Бог, хочу уколоть. Нет, конечно. Я хочу, чтобы вы, Настенька, программировали лучше, т.к. вы можете. А насчет - "меня тут многие поддержали": вы читали Ильфа и Петрова? Там есть сцена игры в шахматы. И поддержка: "Лошадью ходи, лошадью." Вы же считаете себя опрятным человеком? Чистите зубы, гладите одежду. Можете пока-что считать использование Option Explicit главным признаком опрятности в написании приложений на VB. Успехов. VladConn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 16:09 |
|
||
|
|

start [/forum/topic.php?all=1&fid=60&tid=2164818]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 439ms |

| 0 / 0 |
