Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-))) / 10 сообщений из 10, страница 1 из 1
11.05.2007, 09:39
    #34518071
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-)))
загадка
...
Рейтинг: 0 / 0
11.05.2007, 10:20
    #34518165
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-)))
Код: plaintext
1.
2.
3.
4.
5.
Dim boo1 As Boolean
Dim boo2 As Boolean
Dim myDay%
myDay% = Day(Date)
boo1 = Mid("01",  2 ,  1 ) >  11 
boo2 = Mid("01",  2 ,  1 ) > myDay
...
Рейтинг: 0 / 0
11.05.2007, 10:20
    #34518167
Arthur26
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-)))
Andrey Sk, надо так: val(mid("01",2,1))>11=False а val(mid("01",2,1))>day(date())=True.
...
Рейтинг: 0 / 0
11.05.2007, 10:24
    #34518179
Baikaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-)))
А если явно преобразовать в число тогда все отлично
Val(mid("01",2,1)>Val(day(date()))
...
Рейтинг: 0 / 0
11.05.2007, 10:26
    #34518190
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-)))
Код: plaintext
1.
Mid("01",  2 ,  1 ) >  11  = False
Mid("01",  2 ,  1 ) > Val(Day(Date)) = False
...
Рейтинг: 0 / 0
11.05.2007, 10:32
    #34518211
Arthur26
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-)))
Да, я тоже так думаю, т.к. Mid возвращает Variant (String), а Day возвращает Variant(Integer), - несоответствие возвращаемых типов данных.
...
Рейтинг: 0 / 0
11.05.2007, 11:17
    #34518416
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-)))
Как правильно делать я и сам знаю...
Если причина в несоответствии типов данных, тогда почему "1">11=False.
...
Рейтинг: 0 / 0
11.05.2007, 12:35
    #34518755
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-)))
Посмотри в Debug, что возвращает функция Day() ?
Увидишь сначала пробел потом число.
А теперь выполни сравнение числа с "пробел число"
можешь делать так
Код: plaintext
Mid("01",  2 ,  1 ) > Trim(Day(Date))  = False
...
Рейтинг: 0 / 0
11.05.2007, 12:42
    #34518781
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-)))
Andrey SkКак правильно делать я и сам знаю...
Если причина в несоответствии типов данных, тогда почему "1">11=False.

Тут единичка преобразуется в число и сравнивается.

А в случае Mid("01", 2, 1) > Day(Date), так как оба значения Variant-ы и в какой тип данных приводить для сравнения непонятно, то компилятор правую часть выражения начинает приводить к левой равноценно - т.е преобразует в строку с лидирующим пробелом, т.е получается "1" > " 11" - в итоге имеем True.

В общем, правильно в данном случае будет:

CInt(Mid("01", 2, 1)) > Day(Date)
или
Mid("01", 2, 1) > CInt(Day(Date))

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

Val же применять нехорошо, ибо он также возвращает Variant/Double.

P.S Не слишком запутанно?
...
Рейтинг: 0 / 0
11.05.2007, 14:36
    #34519378
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-)))
vkodorПосмотри в Debug, что возвращает функция Day() ?
Увидишь сначала пробел потом число.

В яблочко!!!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / почему сегодня mid("01",2,1)>11=False а mid("01",2,1)>day(date())=True? ;-))) / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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