powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Модули класса. Все ли так просто.
25 сообщений из 70, страница 2 из 3
Модули класса. Все ли так просто.
    #32232201
Конечно!!!
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232202
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чуть поправлю свой последний пост.\r
Все ссылки на все объекты должны уничтожаться - в идеале.\r
Обычные локальные - по выходу из функции. Все остальные - не помню точно когда и в какой последовательности, но ВСЕ должны освободиться. И статические, и глобальные, и пользовательские модули классов всех мастей.\r
\r
Но это происходит не всегда. Из-за некоректной работы при подсчете ссылок либо в самом аксесе, либо в библиотеках (наподобие адо/дао). \r
В результате имеет либо утечку памяти (потерянные объекты из библиотек), либо незакрывающийся аксес (на сам аксес осталась ссылка).\r
\r
Если верить Гетцу, то в аксесе XP (может и 2000-м) изменили поведение аксеса. Теперь при попытке закрыть аксес, на который еще есть ссылки, происходит не сворачивание аксеса (как в 97-м), а действительно закрытие (с нарушением работы клиентов автоматизации, использующих аксес как сервер).\r
\r
показать \r
А слабо запустить поиск в форуме по строке "не закрывается аксес"?\r
Ну если не найдешь - вот тебе, смотри пост Владимира Саныча от 27 май 03, 22:11
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232203
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
апаздал
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232204
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Не апаздал. Твой пост длиннее и садиржятильние.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232206
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да,после Л.П и говорить то уже нечего.
От себя только добавлю.Чернобыльская станция недолжна была взорваться ,но взорвалась-потому что полагались на систему ,которая недолжна была позволить взорваться,но позволила,потому что ...
P.S. Не удивлюсь,если скоро на форуме увижу топик: Помогите!.Завис космический корабль.Подскажите что делать?
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232212
Что касается топика assa "автоподхватившиеся формы"

>теперь можно закрыть вызвавшую оъект форму, он (объект) остается жить. Что, видимо, неправильно.
Очень даже правильно. Еще раз доказывает что Set obj = Nothing не уничтожение объекта

Интересный топ, копаю дальше.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232214
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и не может быть никакого "уничтожения объекта"!!!!
Объект сам себя уничтожает. Когда понимает, что с ним больше никто не работает. Задача приложения - вовремя сказать всем объектам "Мавр сделал свое дело - мавр может отдыхать (или умереть)". Т.е. вызвать Release когда закончили объект использовать. VB это делает за программистов. Но это не повод чтобы этого не знать/не понимать.
Еще раз повторю - читайте Роджерсона ("Основы COM"). Меньше будет глупых вопросов и отвисших от удивления челюстей.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232217
to ЛП
>Еще раз повторю - читайте Роджерсона ("Основы COM"). Меньше будет глупых вопросов и отвисших от удивления челюстей.
Зачем же так грубо! Читать много можно всего интересного. И Струструпа, и Мейерса, и Элджера и т.д. Да все и не прочтешь.
Покажи где я задал глупый вопрос, да и товисших челюстей пока не наблюдается. Да и кстати. Проверяя примеры топика которого ты мне посоветовал, зависание Access не наблюдалось. Жаль что дома A97 нет.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232218
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо за ссылки, изучил.
Ага, заметил одно обстоятельство, которое отличает мои привычки от описанного в ссылке.

Везде где работаем с объектной переменной (для примера ctlCheckBox1), я использую жесткое правило: когда обращаюсь к значению контрола, то указываю его явно:
ctlCheckBox1.Value , ибо Value - одно из свойств объекта.

Ну вот, 4 года писал под аксес и даже не знал, что его так легко можно "повесить", даже обидно. :)

Кстати, для тех, кто копает:
когда вы пишете конструкцию:
Код: plaintext
if ctlCheckBox then ...

то на момент выполнения оператора if создается дублирующая ссылка на объект, время жизни которой, по-идее ограничивается областью вычисления истинности выражения. Может здесь Ac97 "ноги ломал".
именно поэтому я использую выражение:
Код: plaintext
if ctlCheckBox.Value then ..., 

которое вовсе необязательно стравнивать с true в таком виде (как предлагали в форуме). И висяков за 4 года НЕ ПОМНЮ, кроме упомянутого мною выше случая. (более чем на 50-ти машинах прога работала, совершенно различные конфигурации и операционки, win95-win2k).

И еще один момент, крайне не рекомендуется использовать Variant для объектных ссылок, надо их всегда типизировать. Кстати, к строкам это тоже относиться.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232220
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
По-моему, начался спор о религии. Кто верит в то, что у Майкрософта бывают баги, а кто верит в то, что у Майкрософта не бывает багов... Тут переубедить невозможно.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232221
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> которое вовсе необязательно стравнивать с true в таком виде (как предлагали в форуме).

Поскольку это предлагал я, то попробую оправдаться.

1. Эту рекомендацию я вычитал на каком-то сайте, сам ей никогда не следовал. Вообще стараюсь не писать оборотов типа If a = True, если известно, что переменная и без того логическая.

2. Мне не удалось воспроизвести "незакрываемость" Аксесса при помощи описанного трюка с чекбоксом.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232222
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Шкуренко Александр

Вполне возможно, что для "удачного" эксперимента потребуется именно Ac97 или моложе. Они имели свой VB-движок. Начиная с версии 2000 это все хозяйство (office) работает на стандартном VBA, которое Микрософт позиционировала как отдельный продукт. У меня была приложуха со встроенным VBA, прям как у асеса. Ничего плохого об этом VBA сказать не могу, скорее наоборот.

ЛП несомнено прав, что хотя бы основы COM изучить стоит, если активно программируешь на VB, потому как все классы VB и все с чем он умеет работать - суть COM объекты. Знание самых базовых принципов организации COM помогает понять, что скрывается за строками VB кода, т.е. позволояет выступать в роли "адекватного" программиста.

Себя я позиционирую как C++-ник, но большинство всяких бизнесс проектов выполнял или на ассесе или на VB или с применением встроенного VBA, ибо по надежности и скорости разработки - это тул №1 . Критичные к быстродействию, или требующие частых обращений к WinAPI классы обычно выносились во внешние COM-библиотеки на заключительныхз стадиях проектов. Обычно это было не более 10% всех классов.

Так что, аксесс форева!

--------------------------
а при слове .NET - все насторожились
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232224
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч

дело не в true, суть моего подхода - ctlCheckBox. Value , т.е. я явно задаю VB, что собираюсь иметь дело не со всем объектом, а лишь с его свойством Value. Для меня эта такая же дисциплина кода как для многих Set var=Nothing. Наверно именно поэтому с подвисаниями не сталкивался.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232225
to vdimas
>Везде где работаем с объектной переменной (для примера ctlCheckBox1), я использую жесткое правило: когда обращаюсь к значению контрола, то указываю его явно:
ctlCheckBox1.Value, ибо Value - одно из свойств объекта.

А в чем раньше кодить начал в С++ наверное, либо хорошо знаешь C++ и COM с его методами по умолчанию.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232226
Не успел вопрос задать, а он уже ответил. Телепат :-))
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232227
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шкуренко Александр

пора завести отдельный форум: COM, и приглашать туда VB-программистов, потому как это родственная им технология.
Прекрасно знаю о многих аттрибутах методов COM-объектов, в том числе и об упомянутом. :)
Но если уж сражаться за COM:
(прошу прощенья за оффтоп, но COM-форума пока нет, а сюда это гораздо ближе, чем к c++)

Я не уверен, что такая конструкция:
if ctlCheckBox then
в старом Ас97 интерпретировалась сразу правильно (в 97 был именно интерпретатор, в отличии от VBA в поздних версиях), тут именно = true помогала интерпретатору разобраться, КАК ИМЕННО будет использоваться его объект, и выбрать свойство по-умолчанию. Если этого не делать, то приведенная запись создает временную переменную типа Variant (которая будет содержать КОПИЮ ссылки на ctlCheckBox), и уже с этим временным Variant и будет происходить вся работа.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232268
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> дело не в true, суть моего подхода - ctlCheckBox.Value

Это я понимаю. Поскольку True и .Value у нас противопоставляются как неправильный и правильный подходы, то я и сказал, что вариантом с True я не пользуюсь. Что касается .Value, то я вполне понимаю логичность этого стиля (хотя, к сожалению, не настолько дисциплинирован, чтобы этому всегда следовать). :^)
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232304
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 vdimas
в 97 был именно интерпретатор, в отличии от VBA в поздних версиях

У тебя опять залипание мозга?

В 97-м - VBA 5.0, в 2000/2002 - VBA 6.х
Различие есть в библиотеках, интерфейсе, чуть-чуть в языковых конструкциях, но уж никак не в последовательности обработки исходных текстов.
Как был VB компилятором в промежуточный язык (команды которого затем интерпретировались), так и остался.

Не надо гнать пургу. Или, еще раз повторю, осторожнее в терминологии.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232314
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ЛП

В соседнем топе уже извинился, что с версиями мог попутать, на 97-м работал очень мало, уже в 1999-м перешел на бету 2000-го. Да VBA компилит классы по мере надобности, но как сейчас помню (в ту дореволюционную пору ;)) ), что пришлось поработать еще на той версии Access, в котором был в чистом виде интерпретатор, причем свой собственный, и не VB и не VBScript, и VBA еще не было, а был язык макросов в Excel. (соответственно насчет ИМЕННО 97-го мог и призагнуть).

Биография, знаешь ли, бурная была, и микропорцессорные блоки систем радиосвязи разрабатывал, и БД, и драйверы писал, - короче вертелся как мог, время трудное было. (некогда было на несущественные мелочи внимания обращать).

Меня бы с той моей энергией да в нынешние благодатные времена... :)

Насчет истории Access - пошел обращаться к анналам, пока сильно не наругали...

А интересно, по какой причине народ еще ас97 юзает?
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232324
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это в аксесе 2.0 был AccessBasic (а не язык макросов Excel), а начиная с 95-го - VBA
Да и в excel уже давным-давно VBA.
Давненько ты видать с офисом не работал

А интересно, по какой причине народ еще ас97 юзает?
По причине унаследованных систем
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232327
Фотография progist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2vidmas
ты не смотри, что у Лоха ник такой, на самом деле он и не Лох совсем
Я давно это просек, почти сразу, как сюда пришел.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232366
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лифчик
Мне кажется, что мы мало что потеряли. В незапамятном 1985 году мне нужно было решить задачу. Машина СМ-4, я убил месяц с програмимистом на постановку, написание и отладку. Сам-то я тоже не профи, а уж в то время имел о программировании самое смутное представление, поскольку два семестра платонического обучения программированию (к машинам не подпускали, все на бумажке) были благополучно забыты
. Сейчас, вспоминая задачу, четко понимаю, что потрачу на Access максимум 4 дня, из которых 2 ушли бы на интерфейс для пользователя. И, несмотря на то, что он не заточен специально под статистику, ушло бы на обсчет максимум минут 10-20, что меня мало волнует.
Вот и считаем деньги.
Можно и нужно восхищаться парусниками и теми, кто ими управлял, но они ушли как массовое средство перевозки - но парус остался для тех, кто в него влюблен, думаю так и здесь.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232367
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 vdimas
А интересно, по какой причине народ еще ас97 юзает?
А времени нет переписывать и тестировать два десятка приложений и ставить А2000 на 4 десятках машин. Прижмет - придется, но пока все устраивает.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232398
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП Это в аксесе 2.0 был AccessBasic (а не язык макросов Excel),

Да ясен пень, что Excel-Excel-ем, а Access-Access-ом! Я сказал, что работал на той, версии когда еще VBA не было (а был, язык макросов у екселя, типа уточняю версию того барахла тех времен).

Потом перешел на ac97, но зело он капризный был, особенно при подключении линкованных таблиц по локалке, да и еще много мелких всяких головных болей принес, поэтому постарался побыстрее перепрыгнуть на 2000-й, и об 97-м сохранились слабые воспоминания.

--------------------
Развелись, понимаешь, санитары леса.
...
Рейтинг: 0 / 0
Модули класса. Все ли так просто.
    #32232599
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alexander G : В Вашем посте содержится подтверждение моих слов. С 85 по н.в. мощность настольных вычислителей возрасла мин.1000 раз. А задачу свою Вы решили за 30 дней тогда, и за 4 - сейчас. 30/4=7.8 раза. Вот и я о том же. Приладили, понимаешь, прямоточный ВРД к телеге и рассекают на ней по магазинам. Нет чтобы крылья приставить и взлететь! ("Наши люди в булочную на такси не ездят"(с)Бриллиантовая рука.)
Кроме того, за эти годы Вы, безусловно, и поумнели :-)

Вообще, я не ностальгирую по парусам. Я на то лишь указываю, что если программеры не развращены постоянным тупым наращиванием вычислительной мощности и работают в режиме ограниченных ресурсов, они начинают изобретать логику, структуры, архитектуру и прочие решения, которые позволяют экономить (память/время). И это - КРАСИВЫЕ решения. Ну, конечно, красивые для тех, которые могут оценить, например, красоту метода золотого сечения в сравнении с методом перебора.
А сейчас экономить не модно. Это - не коммерческое поведение. Все равно через 3 года нужно обновить свою железку и поставить Винды N+1. Как и автомобиль. Иначе ты ретроград. Не пройдешь сертификацию ISO. Денег не дадут. Такая вот попса получается.
А красота нынешняя имеет заставку виндов и пахнет деньгами. Какое-там-на-хрен золотое сечение! ...Компьютерные монстры на столе у секретарши, где раньше п/м Ятрань стояла. Да на подобной машине наши отцы ракету для посадки на луну обсчитывали! А теперь это подставка под кофе и пасьянс. 95% офисных компьютеров используется как замена пишущей машинке. Ну может где-то еще электронные таблицы бухгалтерами юзаются. Электронная почта как простая СУБД. Все. Остальное - приблуды. И это - на 1,5 Ггц и 500 МБ оперативки! Нет, мы положительно с Феррари на болиды Формулы-1 пересаживаемся. Только на хрена это нужно, вы задумывались? Чтобы песочные часы побороть? А может есть другие способы?

Я уверен, что есть. Только они нарушат капитализацию некоторых уважаемых фирм и сдуют некоторое количество мыльных пузырей в районе индекса Насдак. Поэтому - неприемлемы.
Четыре года назад искали решение для автоматизации торговых точек на основе ПОС-терминала. начиналось все это дело с 16 мб оперативки и не помню какого пентиума. Не важно. Главное - стоимость комплекта $2000. Для Москвы сойдет. Думали, что пока начнем внедрение, цены упадут и можно будет для деревни собирать комплекты в районе $1000 - тогда концы с концами сходились в бизнес-плане. Наивные! Через полгода уже базисный комплект 32 мб, пентиум вполтора раза быстрее, а стоимость всего этого дела выше на $200. Мы говорим - "Нам не нужны ваши 32мб и быстрый пентиум в деревне! На кассе крутится одна задача." Ответ - невозможно, опция с меньшей памятью и процессором обойдется вам дороже."
Такая вот хрень. Я конечно не призываю добывать огонь верчением палочки в колоде, но некоторые тенденции в ИТ индустрии мне сильно не нравятся. Иной раз хочется под парус встать или до магазина на велосипеде доехать вопреки моде.
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 2 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Модули класса. Все ли так просто.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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