|
|
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
Конечно!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 17:07 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
Чуть поправлю свой последний пост.\r Все ссылки на все объекты должны уничтожаться - в идеале.\r Обычные локальные - по выходу из функции. Все остальные - не помню точно когда и в какой последовательности, но ВСЕ должны освободиться. И статические, и глобальные, и пользовательские модули классов всех мастей.\r \r Но это происходит не всегда. Из-за некоректной работы при подсчете ссылок либо в самом аксесе, либо в библиотеках (наподобие адо/дао). \r В результате имеет либо утечку памяти (потерянные объекты из библиотек), либо незакрывающийся аксес (на сам аксес осталась ссылка).\r \r Если верить Гетцу, то в аксесе XP (может и 2000-м) изменили поведение аксеса. Теперь при попытке закрыть аксес, на который еще есть ссылки, происходит не сворачивание аксеса (как в 97-м), а действительно закрытие (с нарушением работы клиентов автоматизации, использующих аксес как сервер).\r \r показать \r А слабо запустить поиск в форуме по строке "не закрывается аксес"?\r Ну если не найдешь - вот тебе, смотри пост Владимира Саныча от 27 май 03, 22:11 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 17:07 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
апаздал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 17:08 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
Не апаздал. Твой пост длиннее и садиржятильние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 17:11 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
Да,после Л.П и говорить то уже нечего. От себя только добавлю.Чернобыльская станция недолжна была взорваться ,но взорвалась-потому что полагались на систему ,которая недолжна была позволить взорваться,но позволила,потому что ... P.S. Не удивлюсь,если скоро на форуме увижу топик: Помогите!.Завис космический корабль.Подскажите что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 17:37 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
Что касается топика assa "автоподхватившиеся формы" >теперь можно закрыть вызвавшую оъект форму, он (объект) остается жить. Что, видимо, неправильно. Очень даже правильно. Еще раз доказывает что Set obj = Nothing не уничтожение объекта Интересный топ, копаю дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 17:56 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
Да и не может быть никакого "уничтожения объекта"!!!! Объект сам себя уничтожает. Когда понимает, что с ним больше никто не работает. Задача приложения - вовремя сказать всем объектам "Мавр сделал свое дело - мавр может отдыхать (или умереть)". Т.е. вызвать Release когда закончили объект использовать. VB это делает за программистов. Но это не повод чтобы этого не знать/не понимать. Еще раз повторю - читайте Роджерсона ("Основы COM"). Меньше будет глупых вопросов и отвисших от удивления челюстей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 18:12 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
to ЛП >Еще раз повторю - читайте Роджерсона ("Основы COM"). Меньше будет глупых вопросов и отвисших от удивления челюстей. Зачем же так грубо! Читать много можно всего интересного. И Струструпа, и Мейерса, и Элджера и т.д. Да все и не прочтешь. Покажи где я задал глупый вопрос, да и товисших челюстей пока не наблюдается. Да и кстати. Проверяя примеры топика которого ты мне посоветовал, зависание Access не наблюдалось. Жаль что дома A97 нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 18:22 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
спасибо за ссылки, изучил. Ага, заметил одно обстоятельство, которое отличает мои привычки от описанного в ссылке. Везде где работаем с объектной переменной (для примера ctlCheckBox1), я использую жесткое правило: когда обращаюсь к значению контрола, то указываю его явно: ctlCheckBox1.Value , ибо Value - одно из свойств объекта. Ну вот, 4 года писал под аксес и даже не знал, что его так легко можно "повесить", даже обидно. :) Кстати, для тех, кто копает: когда вы пишете конструкцию: Код: plaintext то на момент выполнения оператора if создается дублирующая ссылка на объект, время жизни которой, по-идее ограничивается областью вычисления истинности выражения. Может здесь Ac97 "ноги ломал". именно поэтому я использую выражение: Код: plaintext которое вовсе необязательно стравнивать с true в таком виде (как предлагали в форуме). И висяков за 4 года НЕ ПОМНЮ, кроме упомянутого мною выше случая. (более чем на 50-ти машинах прога работала, совершенно различные конфигурации и операционки, win95-win2k). И еще один момент, крайне не рекомендуется использовать Variant для объектных ссылок, надо их всегда типизировать. Кстати, к строкам это тоже относиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 18:24 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
По-моему, начался спор о религии. Кто верит в то, что у Майкрософта бывают баги, а кто верит в то, что у Майкрософта не бывает багов... Тут переубедить невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 18:24 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
> которое вовсе необязательно стравнивать с true в таком виде (как предлагали в форуме). Поскольку это предлагал я, то попробую оправдаться. 1. Эту рекомендацию я вычитал на каком-то сайте, сам ей никогда не следовал. Вообще стараюсь не писать оборотов типа If a = True, если известно, что переменная и без того логическая. 2. Мне не удалось воспроизвести "незакрываемость" Аксесса при помощи описанного трюка с чекбоксом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 18:31 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
2 Шкуренко Александр Вполне возможно, что для "удачного" эксперимента потребуется именно Ac97 или моложе. Они имели свой VB-движок. Начиная с версии 2000 это все хозяйство (office) работает на стандартном VBA, которое Микрософт позиционировала как отдельный продукт. У меня была приложуха со встроенным VBA, прям как у асеса. Ничего плохого об этом VBA сказать не могу, скорее наоборот. ЛП несомнено прав, что хотя бы основы COM изучить стоит, если активно программируешь на VB, потому как все классы VB и все с чем он умеет работать - суть COM объекты. Знание самых базовых принципов организации COM помогает понять, что скрывается за строками VB кода, т.е. позволояет выступать в роли "адекватного" программиста. Себя я позиционирую как C++-ник, но большинство всяких бизнесс проектов выполнял или на ассесе или на VB или с применением встроенного VBA, ибо по надежности и скорости разработки - это тул №1 . Критичные к быстродействию, или требующие частых обращений к WinAPI классы обычно выносились во внешние COM-библиотеки на заключительныхз стадиях проектов. Обычно это было не более 10% всех классов. Так что, аксесс форева! -------------------------- а при слове .NET - все насторожились ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 18:38 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч дело не в true, суть моего подхода - ctlCheckBox. Value , т.е. я явно задаю VB, что собираюсь иметь дело не со всем объектом, а лишь с его свойством Value. Для меня эта такая же дисциплина кода как для многих Set var=Nothing. Наверно именно поэтому с подвисаниями не сталкивался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 18:42 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
to vdimas >Везде где работаем с объектной переменной (для примера ctlCheckBox1), я использую жесткое правило: когда обращаюсь к значению контрола, то указываю его явно: ctlCheckBox1.Value, ибо Value - одно из свойств объекта. А в чем раньше кодить начал в С++ наверное, либо хорошо знаешь C++ и COM с его методами по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 18:43 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
Не успел вопрос задать, а он уже ответил. Телепат :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 18:47 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
Шкуренко Александр пора завести отдельный форум: COM, и приглашать туда VB-программистов, потому как это родственная им технология. Прекрасно знаю о многих аттрибутах методов COM-объектов, в том числе и об упомянутом. :) Но если уж сражаться за COM: (прошу прощенья за оффтоп, но COM-форума пока нет, а сюда это гораздо ближе, чем к c++) Я не уверен, что такая конструкция: if ctlCheckBox then в старом Ас97 интерпретировалась сразу правильно (в 97 был именно интерпретатор, в отличии от VBA в поздних версиях), тут именно = true помогала интерпретатору разобраться, КАК ИМЕННО будет использоваться его объект, и выбрать свойство по-умолчанию. Если этого не делать, то приведенная запись создает временную переменную типа Variant (которая будет содержать КОПИЮ ссылки на ctlCheckBox), и уже с этим временным Variant и будет происходить вся работа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 18:53 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
> дело не в true, суть моего подхода - ctlCheckBox.Value Это я понимаю. Поскольку True и .Value у нас противопоставляются как неправильный и правильный подходы, то я и сказал, что вариантом с True я не пользуюсь. Что касается .Value, то я вполне понимаю логичность этого стиля (хотя, к сожалению, не настолько дисциплинирован, чтобы этому всегда следовать). :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 20:27 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
2 vdimas в 97 был именно интерпретатор, в отличии от VBA в поздних версиях У тебя опять залипание мозга? В 97-м - VBA 5.0, в 2000/2002 - VBA 6.х Различие есть в библиотеках, интерфейсе, чуть-чуть в языковых конструкциях, но уж никак не в последовательности обработки исходных текстов. Как был VB компилятором в промежуточный язык (команды которого затем интерпретировались), так и остался. Не надо гнать пургу. Или, еще раз повторю, осторожнее в терминологии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 21:37 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
2 ЛП В соседнем топе уже извинился, что с версиями мог попутать, на 97-м работал очень мало, уже в 1999-м перешел на бету 2000-го. Да VBA компилит классы по мере надобности, но как сейчас помню (в ту дореволюционную пору ;)) ), что пришлось поработать еще на той версии Access, в котором был в чистом виде интерпретатор, причем свой собственный, и не VB и не VBScript, и VBA еще не было, а был язык макросов в Excel. (соответственно насчет ИМЕННО 97-го мог и призагнуть). Биография, знаешь ли, бурная была, и микропорцессорные блоки систем радиосвязи разрабатывал, и БД, и драйверы писал, - короче вертелся как мог, время трудное было. (некогда было на несущественные мелочи внимания обращать). Меня бы с той моей энергией да в нынешние благодатные времена... :) Насчет истории Access - пошел обращаться к анналам, пока сильно не наругали... А интересно, по какой причине народ еще ас97 юзает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 22:05 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
Это в аксесе 2.0 был AccessBasic (а не язык макросов Excel), а начиная с 95-го - VBA Да и в excel уже давным-давно VBA. Давненько ты видать с офисом не работал А интересно, по какой причине народ еще ас97 юзает? По причине унаследованных систем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 22:20 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
2vidmas ты не смотри, что у Лоха ник такой, на самом деле он и не Лох совсем Я давно это просек, почти сразу, как сюда пришел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2003, 22:24 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
2 Лифчик Мне кажется, что мы мало что потеряли. В незапамятном 1985 году мне нужно было решить задачу. Машина СМ-4, я убил месяц с програмимистом на постановку, написание и отладку. Сам-то я тоже не профи, а уж в то время имел о программировании самое смутное представление, поскольку два семестра платонического обучения программированию (к машинам не подпускали, все на бумажке) были благополучно забыты . Сейчас, вспоминая задачу, четко понимаю, что потрачу на Access максимум 4 дня, из которых 2 ушли бы на интерфейс для пользователя. И, несмотря на то, что он не заточен специально под статистику, ушло бы на обсчет максимум минут 10-20, что меня мало волнует. Вот и считаем деньги. Можно и нужно восхищаться парусниками и теми, кто ими управлял, но они ушли как массовое средство перевозки - но парус остался для тех, кто в него влюблен, думаю так и здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2003, 02:12 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
2 vdimas А интересно, по какой причине народ еще ас97 юзает? А времени нет переписывать и тестировать два десятка приложений и ставить А2000 на 4 десятках машин. Прижмет - придется, но пока все устраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2003, 02:19 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
ЛП Это в аксесе 2.0 был AccessBasic (а не язык макросов Excel), Да ясен пень, что Excel-Excel-ем, а Access-Access-ом! Я сказал, что работал на той, версии когда еще VBA не было (а был, язык макросов у екселя, типа уточняю версию того барахла тех времен). Потом перешел на ac97, но зело он капризный был, особенно при подключении линкованных таблиц по локалке, да и еще много мелких всяких головных болей принес, поэтому постарался побыстрее перепрыгнуть на 2000-й, и об 97-м сохранились слабые воспоминания. -------------------- Развелись, понимаешь, санитары леса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2003, 07:29 |
|
||
|
Модули класса. Все ли так просто.
|
|||
|---|---|---|---|
|
#18+
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мб и быстрый пентиум в деревне! На кассе крутится одна задача." Ответ - невозможно, опция с меньшей памятью и процессором обойдется вам дороже." Такая вот хрень. Я конечно не призываю добывать огонь верчением палочки в колоде, но некоторые тенденции в ИТ индустрии мне сильно не нравятся. Иной раз хочется под парус встать или до магазина на велосипеде доехать вопреки моде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2003, 11:18 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32232218&tid=1679860]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
99ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 467ms |

| 0 / 0 |
