условное компилирование в перечислении

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
HiMik2003
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 21.07.2003 (Пн) 11:32
Откуда: Кишинёв

условное компилирование в перечислении

Сообщение HiMik2003 » 10.01.2006 (Вт) 19:49

Что означает сие:


Код: Выделить всё
Public Enum eCompare
    Lesser = -1&
    Equal = 0&
    Greater = 1&
    #If False Then
        Dim Lesser, Equal, Greater
    #End If
End Enum

Будет ли когда-то выполнятся инструкция Dim ...


Найдено в хорошем примере сортировки здесь (http://www.Planet-Source-Code.com/vb/sc ... 1&lngWId=1)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 10.01.2006 (Вт) 20:50

Код: Выделить всё
#Const MyFalse=-1

    #If MyFalse Then
        Dim Lesser as Boolean, Equal as Boolean, Greater  as Boolean
    #else
Public Enum eCompare
    Lesser = -1&
    Equal = 0&
    Greater = 1&
End Enum
    #End If

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.01.2006 (Ср) 11:54

1. Выполнятся Dim в ентом коде никогда не будет
2. И хорошо, что не будет, а то Dim внутри перечисления выглядит по меньшей мере странно
3. Возможно тот, кто писал сей исходний имел ввиду то что написал Konst_One, а может и нет... Кто знает ход чьих то мыслей... Возможно здесь условная компиляция была использована вместо комментариев... мало ли
Весь мир матрица, а мы в нем потоки байтов!

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 11.01.2006 (Ср) 12:12

Пару раз где-то видел... Это такой ловкий трюк для сохранения регистра названий внутри Enum.

Возьмем для примера такой Enum:
Код: Выделить всё
Private Enum eSys
    sysWindows = 1
    sysLinux
End Enum


Допишем код:
Код: Выделить всё
Public Sub Main()
    Dim f As eSys
    f = sysWINDOWS
End Sub


В итоге IDE поступит "умно":
Код: Выделить всё
Private Enum eSys
    sysWINDOWS = 1
    sysLinux
End Enum


Такую глупость можно убрать при помощи трюка из 1 поста.
Моду создают модоки, а распространяют модозвоны.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 11.01.2006 (Ср) 12:16

прикольно, однако :lol:
никогда не заморачивался на эту тему

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 11.01.2006 (Ср) 12:18

Я тоже, но особо извращенных эстетов коробит :lol:
Моду создают модоки, а распространяют модозвоны.

HiMik2003
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 21.07.2003 (Пн) 11:32
Откуда: Кишинёв

Сообщение HiMik2003 » 11.01.2006 (Ср) 19:46

Большое спасибо за ответы
Теперь понятно. Интересно, что после убирания условной конструкции IDE (до перезагрузки проекта) "помнит" о ней и препятствует изменению регистра в названии константы перечисления...
Похоже, инструкция "Dim" учитывается только при редактировании в IDE и, конечно, игнорируется при интерпретации/компиляции.(т.к. "If False" - никогда не сработает)

Вообщем, фишка полезная. Хотя лично я крайне редко указываю константы перечисления, набивая их с клавы.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 77

    TopList  
cron