|
Как очистить глобальную переменную с моим Type
|
|||
---|---|---|---|
#18+
Господа! Я тут решил от безделья поэкспериментировать, и столкнулся с одной интересной ситуацией. Задача такая - создать пользовательский объект, одной процедурой присвоить значения свойствам, а второй использовать их. Проясните один момент: Создал пользовательский тип "свойства" в модуле, объявил перемеренную модуля obj , присвоил значения свойствам через процедуру setProperty , а через функцию Getpropetry я обратился к свойствам этого класса. Все бы хорошо, но очистить эту переменную я не могу. Собственно в этом вопрос - как очистить глобальную переменную пользовательского типа (Type) ? Возможно можно "обнулить" свойства этого класса? Подумываю через цикл это делать, но возможно есть более простой способ. Если реализовывать это метод через встроенный Class эксель - нет проблем, через set..= nothing, а в примере ниже не могу это сделать. Не дает использовать Set (object recuired), максимум что я могу, передать другой переменной значение свойств этого типа, не не сам тип. Пример: Код: vbnet 1. 2. 3. 4.
Код для понимания Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Модератор: > решил от безделья поэкспериментировать Неплохо было еще от безделья предварительно прочесть правила форума Учимся использовать тэги оформления кода - FAQ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 18:50 |
|
Как очистить глобальную переменную с моим Type
|
|||
---|---|---|---|
#18+
Нормальный парень, правильно ругается на Set, так как переменная не объектного типа, а UDT. Либо UDT 'свойства' сделать классом и использовать Set obj = Nothing, либо описать некую переменную типа 'свойства', присвоить её полям значения по умолчанию (либо оставить как есть, пустыми), и присваивать её значение obj: Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 10:45 |
|
Как очистить глобальную переменную с моим Type
|
|||
---|---|---|---|
#18+
13-й квартал, Хм.. не попадалось информация о переменных типа UDT, для себя с их определяю как "ссылка на пользовательский тип" :) А так, идея хорошая, сначала и не пришла мысль о создании 2ух перемен и вернуть значение по умолчанию, но и это вариант не прошел. Ругается - "...types defined in public.."" Как раз недавно мне представилась возможность использовать этот способ, я дополнительно реализовал процедуру CLEARDataObject, в которой, по завершению, каждому свойству присваиваю значение Null или Nothing. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2016, 16:23 |
|
Как очистить глобальную переменную с моим Type
|
|||
---|---|---|---|
#18+
Нормальный парень, UDT - это User-Defined Type, он же пользовательский тип (структура). И это не ссылка.Нормальный пареньРугается - "...types defined in public..""Какие-то существенные подробности упущены (описатели области видимости, тип и instancing модулей, взаимодействие процедур и т. д). Приложите проект, так будет проще. Вариант с классом вместо Type чем не устраивает? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 19:04 |
|
Как очистить глобальную переменную с моим Type
|
|||
---|---|---|---|
#18+
можно через CopyMemory забить переменную нулями. правда не знаю, что будет со счетчиком ссылок у объектных полей, может объекты и не уничтожатся. хотя по идее должны. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 22:09 |
|
Как очистить глобальную переменную с моим Type
|
|||
---|---|---|---|
#18+
Antonariy, ничего хорошего не будет. IUnknown::Release() не будет вызван, счётчик ссылок не уменьшится. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 23:06 |
|
Как очистить глобальную переменную с моим Type
|
|||
---|---|---|---|
#18+
13-й кварталUDT - это User-Defined Type, он же пользовательский тип (структура). И это не ссылка. но когда мы объявляем переменную на Type, это же ссылка на пользовательский тип - я это имел ввиду.. 13-й кварталВариант с классом вместо Type чем не устраивает? Ну не то, чтобы не устраивает.. Основное почему я озадачился Type-ом - не получалось реализовать вложенный Type в Type, как в моем примере выше - ВложенныйТип As объекты, приходится создавать отдельно class-модуль. В этом случае я и использую UDT. Но ещё думал производительность кода будет шустрее, если реализовывать через Type, также, хотел оценить "гибкость" и удобство такого метода. 13-й кварталПриложите проект, так будет проще. Это автономная программа, проект не имеется смысла выкладывать. Но на эту тему я еще писал на форуме, если интересно.. Как оптимизировать код и ускорить выполнения программы? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2016, 19:27 |
|
Как очистить глобальную переменную с моим Type
|
|||
---|---|---|---|
#18+
13-й кварталUDT - это User-Defined Type, он же пользовательский тип (структура). Кстати, я вышел из ситуации так - отдельно прописал процедуру, которая по завершения программы присваивает каждому свойству значение null или nothing там где это нужно.. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2016, 19:33 |
|
|
start [/forum/topic.php?fid=60&fpage=19&tid=2155429]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 322ms |
total: | 470ms |
0 / 0 |