powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Цикл for для checkbox'ов
25 сообщений из 53, страница 2 из 3
Цикл for для checkbox'ов
    #34629560
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, у вас они определены не глобально, а Private, раз на уровне формы, что, впрочем, мало что меняет.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34629562
Ден Программёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnМои объяснения не затрагивали глобально определенных объектов. Касательно именно рекордсетов: в своей практике мне не приходилось еще сталкиваться с оправданностью их декларирования глобально.

Мне интересно? а как тогда работать с базами данных, добавлять-удалять-изменять если объект создан лишь на уровне процы
А если через рекорд связь идёт с ДатаКонтролом. Вот мне интересно это знать. Как с БД работают без постоянных рекордов на уровне формы
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34629569
Ден Программёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnКстати, у вас они определены не глобально, а Private, раз на уровне формы, что, впрочем, мало что меняет.

Даже если так!
Мне всё равно приходится в силу ограничений на ядро Джет обновлять рекорды.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34629609
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, это серьезный вопрос, касающийся дизайна проекта и уже не этой темы. Я не в состоянии по времени углубляться и в эту дискуссию. Могу лишь сказать, что я участвовал во многих очень и не очень больших проектах с разными базами. Когда я только начинал, я пытался использовать Recordets на уровне форм и выше. Это жестоко пресекалось отделом качества и на ревью проекта другими разработчиками, т.к. шло вразрез с принципом инкапсулирования и прочими вещами. Можно представить Recordset на уровне специализированного класса. Такой Recordset должен был бы быть при этом очень "dedicated" и скорее всего возвращаться как одно из свойств класса. Его инкарнация и убиение при этом должны поддерживаться в соответствующих событиях класса. Смысл в том, что использование одного и того же объекта в разных методах для разных целей уже не поощряется. Ваш же случай мне неизвестен.

Успехов
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34629686
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConn,
я знаю, что ты знаешь, ты знаешь, что я знаю...
это не совсем вопрос стиля. Это, в большей мере, вопрос управления моментом и порядком уничтожения объектов, и самодисциплины (я отчётливо это почувствовал, начав, после VB, работать с COM на C, потом на C++). О стиле. Некоторые программисты (зависит от опыта, иногда от школы (индусы, например)) предпочитают метод Copy-Paste. Вот и пусть копипастят блок кода, в котором объекты (которые могут быть "тяжёлыми") явно уничтожены. О педагогике. Лучше заложить на уровне рефлекса - закончил пользоваться ресурсом, освободи явно (CComPtr не спасает - деструктор вызывается при выходе за область видимости. Этот выход может быть далеко, путь к нему может быть долгим, с ошибками...).

Вот к теме (или не совсем), в качестве почти что шутки. Есть процедура, который обращается к базе данных через DAO. После обращения к базе надо осводить память, в том числе надо выгрузить библиотеку DAO:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Declare Sub CoFreeUnusedLibraries Lib "ole32" ()
'...
Public Sub ProcessDatabase()
 Dim db As DAO.Database
 Set db = DBEngine.OpenDatabase(база, параметры открытия)
 '... работа с БД
 db.Close
 Set xxx = Nothing
 Set yyy = Nothing
 CoFreeUnusedLibraries
End Sub
Что надо написать вместо xxx и yyy, чтобы библиотека DAO была выгружена?
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34629700
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В VB6 явное уничтожение внутренних объектов перед выходом из процедуры не требуется. Это все, что я хотел сказать. С, С++ и прочее - вне форума. Вопрос самодисциплины и пр. - это тоже другая тема. С точки зрения исполнения кода - есть это или нет - без разницы. В этом смысле это есть вопрос стиля.

Касательно ДАО. Я не знаю, как можно выгрузить целую библиотеку, присоединенную к проекту на стадии дизайна.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34632081
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConn,
IDE и компилятору нужна не сама библиотека, а библиотека типов (другое дело, библиотека типов часто лежит в ресурсах исполняемого файла библиотеки). Это не библиотека со статической компоновкой (.lib), а ActiveX D LL. Процесс, в котором выполняется код проекта (отдельный .exe, или VB6.EXE при отладке), подгружает библиотеку динамически при первом вызове функции из библиотеки; выгрузить библиотеку тоже можно динамически. Для этого надо закрыть объекты и убить ссылки, чтобы вызов точки входа DllCanUnloadNow мог вернуть S_OK, и библиотека могла быть выгружена. Итого, перед вызовом CoFreeUnusedLibraries должны стоять строки:
Код: plaintext
1.
 Set db = Nothing
 Set DBEngine = Nothing
, причём вторая строка выгрузит DLL, которую использовала DAO для работы с базой данных конкретного формата, а CoFreeUnusedLibraries уже выгрузит саму библиотеку DAO.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34632284
Ден Программёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БенедиктVladConn,
IDE и компилятору нужна не сама библиотека, а библиотека типов (другое дело, библиотека типов часто лежит в ресурсах исполняемого файла библиотеки). Это не библиотека со статической компоновкой (.lib), а ActiveX D LL. Процесс, в котором выполняется код проекта (отдельный .exe, или VB6.EXE при отладке), подгружает библиотеку динамически при первом вызове функции из библиотеки; выгрузить библиотеку тоже можно динамически. Для этого надо закрыть объекты и убить ссылки, чтобы вызов точки входа DllCanUnloadNow мог вернуть S_OK, и библиотека могла быть выгружена. Итого, перед вызовом CoFreeUnusedLibraries должны стоять строки:
Код: plaintext
1.
 Set db = Nothing
 Set DBEngine = Nothing
, причём вторая строка выгрузит DLL, которую использовала DAO для работы с базой данных конкретного формата, а CoFreeUnusedLibraries уже выгрузит саму библиотеку DAO.


Спасибо ещё разок, Бенедикт, очень полезная информация про объекты! А Вы можете ещё просветить по вопросу объектных переменных? Хотя нет, лучше поделитесь ссылочками, коли не трудно?
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34632707
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Библиотеки типов (type library) имеют расширение tlb. Они ничего не загружают, а раз так, то и выгрузить их никак не получится - выгружать просто нечего. Что касается Set ... Nothing - опять же могу повторить - для процедурно объявленных объектов в этом нет надобности.

Ден Программёр, касательно "объектных переменных" - на мой взгляд, лучше всего начать надо с изучения классов. Именно они и есть суть того, что потом становится объектом. К сожалению, все мои ресурсы - англоязычные, я не знаю, какие русскоязычные ресурсы вам отрекомендовать.

Вот здесь (English, sorry!):

How to create classes and objects in Visual Basic .NET or in Visual Basic 2005

http://support.microsoft.com/kb/307210


неплохой вводный курс.

Одно из основных отличий между классами (читай, объектами) в VB6 и VB.NET это отсутствие конструктора в первом (то, что исполняется при употреблении New). Есть много других отличий, например, отсутствие Set в VB.NET (сравни objMyObj = Nothing и Set objMyObj = Nothing). Есть много других принципиальных отличий.

Я бы строго рекомендовал изучение классов начать сразу с объектно-ориентированного программирования:

Object-Oriented Programming in Visual Basic

http://msdn2.microsoft.com/en-us/library/b86b82w0(VS.80).aspx


Надеюсь, я дал полезную информацию для того, чтобы начать изучение "объектных переменных".


Успехов.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34632740
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ден Программёр,

Мне кажется, я нашел для вас русскоязычный ресурс по объектам:

Основные понятия языка Visual Basic
Создание и использование объектов

http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/vbcn7/html/vbconcreatingandusingobjects.asp

Успехов
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34632753
Ден Программёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnБиблиотеки типов (type library) имеют расширение tlb. Они ничего не загружают, а раз так, то и выгрузить их никак не получится - выгружать просто нечего. Что касается Set ... Nothing - опять же могу повторить - для процедурно объявленных объектов в этом нет надобности.

Ден Программёр, касательно "объектных переменных" - на мой взгляд, лучше всего начать надо с изучения классов. Именно они и есть суть того, что потом становится объектом. К сожалению, все мои ресурсы - англоязычные, я не знаю, какие русскоязычные ресурсы вам отрекомендовать.

Вот здесь (English, sorry!):

How to create classes and objects in Visual Basic .NET or in Visual Basic 2005

http://support.microsoft.com/kb/307210


неплохой вводный курс.

Одно из основных отличий между классами (читай, объектами) в VB6 и VB.NET это отсутствие конструктора в первом (то, что исполняется при употреблении New). Есть много других отличий, например, отсутствие Set в VB.NET (сравни objMyObj = Nothing и Set objMyObj = Nothing). Есть много других принципиальных отличий.

Я бы строго рекомендовал изучение классов начать сразу с объектно-ориентированного программирования:

Object-Oriented Programming in Visual Basic

http://msdn2.microsoft.com/en-us/library/b86b82w0(VS.80).aspx


Надеюсь, я дал полезную информацию для того, чтобы начать изучение "объектных переменных".


Успехов.

Хотя я вроде просил помощи у Бенедикта, но всё же спасибо, хотя томик про ВБ 6 лежит перед носом и там полно про классы и ООП, но то, что там описано, пока до меня струдом идёт, хотя общую схему я понял.
Спасибо, вобщем!
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34632766
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То, что доходит с трудом - это вполне нормально. Со временем, оно все устаканивается, если использовать.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34632790
Ден Программёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnТо, что доходит с трудом - это вполне нормально. Со временем, оно все устаканивается, если использовать.

спасибо, будем, будем! куда нам деться?-)

Модератор: Просьба не оффтопить. Вы своими вопросами уводите топик слишком далеко от его начальной темы, что не может удовлетворять автора. Прошу в дальнейшем для своих вопросов создавать отдельные темы.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34634432
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ден ПрограммёрА Вы можете ещё просветить по вопросу объектных переменных? Хотя нет, лучше поделитесь ссылочками, коли не трудно?Ссылки на русскоязычные ресурсы не знаю.

По англоязычным. Главный источник - MSDN Library. К сожалению, она в процессе перехода с msdn.microsoft.com на msdn2.microsoft.com, поэтому навигация может не полностью работать. Глава, где описывается работа с объектами в VB6, называется Visual Basic Concepts. Programming with Objects . Лучше найти старый (~1999-2001) выпуск MSDN на CD. Другой источник - книги из коробочных версий VB (Pro, Enterprise Edition). Вторичным источником можно взять архивы Visual Basic Programers Journal , но надо рыться, искать. Особенное внимание статьям под авторством Matthew Curland.
Для понимания подсчёта ссылок, времени жизни объекта, множественности поддерживаемых объектом интерфейсов рекомендую главы 1-4 книги Дейла Роджерсона "Основы COM" . Книга из серии must have.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34634580
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConn,
Я говорю о загрузке/выгрузке кода и структур данных (программных) библиотек в момент выполнения программы, т.е. о функциональности, предоставляемой функциями (Co-)LoadLibrary(-Ex), (Co-)FreeLibrary. Объём занимаемой процессом памяти можно проконтролировать Task Manager-ом, моменты загрузки/выгрузки Dependency Walker -ом.
Библиотека типов может находиться как в отдельном .tlb/.olb файле, так и лежать в виде ресурса в исполняемом файле программной библиотеки (.dll, .ocx, .exe) (на практике чаще последнее). Я не говорил о загрузке/выгрузке библиотеки типов.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34636010
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Позволю себе одно замечание. Вот фразы вроде этой:

Хотя я вроде просил помощи у Бенедикта, но всё же спасибо, хотя томик про ВБ 6 лежит перед носом...

надолго отбивают охоту помогать. На мой взгляд, это просто неуважение к человеку, согласившемуся помочь. Вообще, просто слов нет, никогда раньше такого не встречал. Если тяжело из себя выдавливать элементарное "спасибо", так лучше вообще этого не делать.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34636042
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БенедиктVladConn,
Я говорю о загрузке/выгрузке кода и структур данных (программных) библиотек в момент выполнения программы, т.е. о функциональности, предоставляемой функциями (Co-)LoadLibrary(-Ex), (Co-)FreeLibrary. Объём занимаемой процессом памяти можно проконтролировать Task Manager-ом, моменты загрузки/выгрузки Dependency Walker -ом.
Библиотека типов может находиться как в отдельном .tlb/.olb файле, так и лежать в виде ресурса в исполняемом файле программной библиотеки (.dll, .ocx, .exe) (на практике чаще последнее). Я не говорил о загрузке/выгрузке библиотеки типов.

Да, конечно. Я этот вопрос перезадал на другом форуме, англоязычном. Можете посмотреть, если вам интересно, там в основном народ задумался над легитимностью этого дела, я и не ожидал:

автор BobRodes (Instructor) 29 Jun 07 11:24
At first glance, yes, it does sound a bit crazy. Why do you want to do this?

strongm (MIS) 29 Jun 07 11:45
If it really is a type library, then the answer is no

JoeAtWork (Programmer) 29 Jun 07 13:37
If he has some legitimate reason to do this, maybe late binding would be the answer?

strongm (MIS) 29 Jun 07 14:36
If it is a type library then it doesn't matter if there is a legitimate reason or not. Type libraries do not load anything, so there is nothing to unload.

strongm (MIS) 2 Jul 07 9:25
I think what JoeAtWork was suggesting is that it is difficult to think of a compelling reason why a VB programmer might require control of the unloading of a Type or COM library

BobRodes (Instructor) 2 Jul 07 13:14
Sounds like "straining out gnats" to me.

strongm (MIS) 2 Jul 07 13:39
Given that VB and COM already handle all that for you and keep everything safe for you and your application (e.g correctly maintaining reference counts, pointers etc), that isn't a convincing reason ...
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34636050
Ден Программёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConn


Вот тут уже точно идёт чистая провокация, причём не с моей стороны!!!!!!!

СПАСИБО, надеюсь эти слова согреют Вашу!

Хотя замечу, все меня пытаются учить, хотя при этом поступают совершенно непедагогично! Ошибки я свои признал уже давно, а меня всё ещё пытаются натыкать носом пусть и в свою каку, да ещё забаннить всё время хотят. И как вы думаете, после такого на одного хакера станет явно больше, уже мыслишки всякие завелись в моей вполне светлой голове.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34636098
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вы умудряетесь одновременно косвенно назвать человека, пытавшегося вам помочь, провокатором и сказать СПАСИБО так, что его как-то и не хочется?
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34636548
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ден ПрограммёрОшибки я свои признал уже давно, а меня всё ещё пытаются натыкать носом пусть и в свою каку, да ещё забаннить всё время хотят. И как вы думаете, после такого на одного хакера станет явно больше, уже мыслишки всякие завелись в моей вполне светлой голове.
На ошибках надо учиться а не признавать их, здесь не комсомольское собрание. Просто удивительно как ты умудряешься постоянно влезть в конфликтные ситуации с разными людьми в разных топиках и при этом в своей невоспитанности обвинять других участников и модераторов. Замечания к тебе считаю вполне справедливыми, чего ты постоянно огрызаешься на всех? Умудряешься грубить людям на каждом шагу а перемежая грубость с благодарностями. Хватит флуда и оффтопа, чтоб мне не пришлось закрывать еще и этот топик.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34636743
Ден Программёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23Модератору

Уважаемый, Максим, а что делать? Такова се ля ви, мир вообще попа, но одним ею хочется восхищятся (это те "дурачки", типа меня, которые видят всю каку мира, скрытую в этой попе, но которые всё же восхищаются этим миром, потому что такова училковская доля), а другие хотят её лизать (ну, чтобы получить от неё всё самое лучшее), третьи — иметь её :)) (хотя это тоже большой вопрос), а четвёртым вообще такое от неё надо :)). И остаётся один выход, просто огрызаться, особенно когда машут кулаками после драки.
Кстати, ещё повод подметить (это я как педагог говорю), исправление ошибки начинается с её признания! ХОРОШО, вы желаете извинений в словесной форме, пожалуйста:"Простите меня пожалуйста люди добрые, простите!" Хотя вот вам притча:" Однажды дедушка Сталин сказал, убить человека ничего не стоит — всего каких-то 9 грамм —но даже если собирутся все легионы мира, даже они не смогут убить в человеке его мысли"
Ещё разок СПАСИБО за внимание! Кстати, я тоже в определённом смысле украинец, но я ведь говорю на русском языке
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34637002
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В последнее время открываешь форум - есть новые сообщения - открываешь посмотреть, а там опять Ден с кем нибуть срётся.
ДенЕщё разок СПАСИБО за внимание!
Трафик жалко и время жалко пока пролисташь весь этот базар. Вот такое внимание. Против тебя ничего не имею, но это ж ведь мешает, тем более многие вслед за тобой бросаются туда же в базар (вот и я не выдержал...)
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34637240
Всем спасибо и за помощь, и за простые разговоры о "высоком" (т.к. я впринципе ничего не понял), но есть одно маленькое НО. У меня снова ничего не работает.
Объясню по-подробнее. Есть кнопка, нажав которую должны скрыться 250 чекбосков. Можно просто их прописать типа:
checkbox1.visible=false
checkbox2.visible=false
и т.д., но это достаточно сильно грузит машину, т.к. кроме скрытия происходит выполнение еще 5 процедур. Поэтому хотелось бы сделать цикл for - и время съэкономить и клаву поберечь.
Все объекты на листе, а не на форме. Весь процесс происходит в екселе. То, что предлагалось выше не работает. Либо по определению, либо потому что руки у меня кривые.
Поэтому, снова прошу у Вас помощи.
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34637323
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConn,
да, спасибо, по первому прочтению было интересно. tek-tips стОящий форум?
К сожалению, при повторном прочтении, кроме сообщения от strongm (MIS) 2 Jul 07 13:39, ничего не увидел. Слово "legitimate" применено во втором значении - "2) верный, истинный, правильный, разумный".
"straining out gnats" - отсылка к Евангелию от Матфея: "Вожди слепые, оцеживающие комара и проглатывающие верблюда!" Толковый словарь УшаковаОцеживать комара (поговорка) - проявлять мелочную заботливость о ничтожных вещах,преимущ. при невнимании к важному.Подсчёт ссылок не спасёт от проблемы освобождения ресурсов при циклических ссылках. VB не ответственен и не может быть ответственен за реализацию библиотек - вот DAO сделана так, что остаётся в памяти, пока её явно не "попросят на выход". И бывают ошибки в реализации. Будет время, почитайте эту тему. Обратите внимание, что я столь же стойко, как и Вы, стою на тех же позициях. Но последнее сообщение тоже писал я. Как Вам цитата: MicrosoftThe developer should not rely on Visual Basic for Applications to implicitly close objects when a Sub or Function procedure is exited.? ;)
...
Рейтинг: 0 / 0
Цикл for для checkbox'ов
    #34637340
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почти Лузер,
беда в том, что цикл будет работать медленнее за счёт накладных расходов на организацию и проверок, чем прямой код checkbox1.visible=false: checkbox2.visible=false и т. д.
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 2 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Цикл for для checkbox'ов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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