Пара вопросов по типам и по отладке в ОС x64

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Пара вопросов по типам и по отладке в ОС x64

Сообщение Drag » 25.10.2011 (Вт) 17:40

Приветствую всех. Уже некоторое время мучаюсь с тремя вопросами
1) В случае такой конструкции (урезана):
Код: Выделить всё
Structure MenuClass
   Dim ObjUGTS as Single
   Public MenuTab as Collections.Generic.IList(Of MenuTabClass)
   Structure MenuTabClass
      Public MenuSection as Collections.Generic.IList(Of MenuSectionClass)
      Structure MenuSectionClass
         Public MenuItem as Collections.Generic.IList(Of MenuItemClass)
         Structure MenuItemClass
            Public Sub Show
               'Получить доступ к ObjUGTS
            End Sub
         End Structure
      End Structure
   End Structure
End Structure

Как можно из подпрограммы Show получить доступ к ObjUGTS? Эта переменная должна задаваться в объекте типа MenuClass и распространяться на все дочерние объектные переменные (MenuTab, MenuSection и т.д.). Shared, если я правильно понимаю, тут не подходит, так как в таком случае эта переменная будет общая на все объекты типа MenuClass. Единственное, что приходит в голову - заменить структуры на классы, и использовать Inherits, но я относительно недавно перешел на .Net и еще не все понимаю.
И да, оптимальна ли такая конструкция вложенных друг в друга типов? Или лучше сделать их отдельно? У меня она инициализируется эдаким фрактальным образом - при создании MenuClass создаются MenuTabClass и добавляются в ее коллекцию, при создании каждой из которых создаются MenuSectionClass и добавляются в их коллекции, и так далее.

2) На 64-битной ОС на одном проекте появляются какие-то странности при отладке - в случае какой-либо ошибки, VB лишь заявляет, "No symbols are loaded" и предлагает лишь показать дизассемблированный код, не указывая строку, в которой произошла ошибка. В Advanced Compilation Options платформа указана х86, Debug Info pdb-only, отключено Enable Optimizations, в опциях VB включено Enable Just My Code, включено Suppress JIT optimization on module load, включены все JIT опции... Я даже уже не знаю, что еще может на это влиять.

3) Правильно ли я сделал, выделив практически все публичные объявления в отдельный модуль? Правда, там уже накопилось около 800 строк, не считая пустые...
Я не сплю, я перешел в режим замедленного функционирования.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Пара вопросов по типам и по отладке в ОС x64

Сообщение FireFenix » 25.10.2011 (Вт) 22:55

Drag писал(а):1) В случае такой конструкции (урезана):

Простите, это называется - говнокод.
Объявление 100500 структур в другой структуре - плохой тон объявлений.
Каждое объявление структуры правильнее вынести отдельно

Drag писал(а):Как можно из подпрограммы Show получить доступ к ObjUGTS?

В каждой структуре создать функцию инициализации.
Начиная с главной - передавать переменную функциям инициализации дочерних объектов/структур

Drag писал(а):в случае какой-либо ошибки, VB лишь заявляет, "No symbols are loaded" и предлагает лишь показать дизассемблированный код

Версия студии? Версия фреймворка?
Проект с подобным в студию!
Чаще всего из-за того что, что-то было изменено в настройках работы студии. Лучше всё оставить по умолчанию

Drag писал(а):3) Правильно ли я сделал, выделив практически все публичные объявления в отдельный модуль? Правда, там уже накопилось около 800 строк, не считая пустые...

то что их 800 - нет.
Хороший тон, когда все публичные переменные - классифицированы и разбиты на группы по смыслу в виде объектов/структур, а также инициируются в одном месте или как дочерние объекты
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Re: Пара вопросов по типам и по отладке в ОС x64

Сообщение Drag » 25.10.2011 (Вт) 23:17

FireFenix писал(а):Простите, это называется - говнокод. Объявление 100500 структур в другой структуре - плохой тон объявлений.
Каждое объявление структуры правильнее вынести отдельно

мм, спасибо :). Согласен, ибо пока делал эту матрешку, порой заметно путался.
А по поводу говнокода - это еще ничто по сравнению с одним моим давним "шедевром"-убийцей компилятора, еще когда начинал учиться программированию на VB5... Выглядело примерно так:
Код: Выделить всё
If CalcK Or Opt1 Then Goto 1
For i = 0 to MaxX
1:
   If CalcK Or Opt2 Then Goto 2
   For i2 = 0 to MaxY
2:
      ...
      If CalcK Or Opt2 Then Goto 3
   Next
3:
   If CalcK Or Opt1 Then Goto 4
Next
4:


FireFenix писал(а):В каждой структуре создать функцию инициализации.
Начиная с главной - передавать переменную функциям инициализации дочерних объектов/структур

Понятно, спасибо :).

FireFenix писал(а):Версия студии? Версия фреймворка?

0_о Мда, пока писал, все время хотел указать, и в результате забыл.. Visual Studio 2005 Professional Edition, v. 8.0.50727.42. Фрэймворк, судя по всему, 3.5.
Проект завтра сюда же выложу

FireFenix писал(а):то что их 800 - нет.
Хороший тон, когда все публичные переменные - классифицированы и разбиты на группы по смыслу в виде объектов/структур, а также инициируются в одном месте или как дочерние объекты

Просто проект этот я делаю уже 6 лет, и добавление очередной фичи требует добавления нескольких переменных... По поводу классификации и разбивания на группы - полностью согласен, у меня примерно так и есть.

PS: Большое спасибо за ответ :)
Я не сплю, я перешел в режим замедленного функционирования.

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Re: Пара вопросов по типам и по отладке в ОС x64

Сообщение Drag » 26.10.2011 (Ср) 10:50

Вот проект, в котором происходит эта ошибка. После запуска нужно выбрать любую из OptionButton'ов.
Вложения
LD1-ErrorTest.rar
(173.71 Кб) Скачиваний: 90
Я не сплю, я перешел в режим замедленного функционирования.


Вернуться в Visual Basic .NET

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

    TopList