![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поймать того кто неправильно выходит из программы :-)) [D5, Paradox]
Evyshka © (2003-01-27 09:48:00)Здраствуйте! Подскажите как сделать так что бы проследить кто неправильно выходит из программы
Проблема в том чтоиспользуются БД Paradox, 12 пользователей и куча индексов ;-)) При выключение ПК без закрытия программы летят индексы Может кто нибудь встрачался с данной проблемой ?
Sergey13 (2003-01-28 09:24:00) [1]2Evyshka © (27.01.03 09:48)
ИМХО, тебе пора думать о переходе на нормальный SQL сервер. ИБ например. 12 пользователей - это более чем достаточный повод. Иначе как не извращайся - все равно это будет латанием дыр.
2MsGuns © (27.01.03 15:32)
>Мы разработали подобную для одного крупного заказчика (больше 20 станций),- через пару месяцев ее работы "абортов" стало на два порядка меньше
И вы это далали с нуля на Парадоксе? Я балдю от такого абортария.
sniknik (2003-01-27 16:58:00) [2]MsGuns © (27.01.03 16:49)
кстати таки да, не учел. :о( а ведь в 1С -ке это уже достало. Более важный аргумент.
Alexander_K (2003-01-27 16:57:00) [3]А я согласен с
ZeroDivide © (27.01.03 10:04)
только у меня один знакомый сделал так:
он тоже делает флаги и их проверяет, но при обнаружении неправильного выхода, на экране показывается форма (если принтер включен, то и печатается) следующего содержания:
На имя директора, служебная записка
Я такой-то (такая-то)систематически нарушаю указания отдела автоматизации, что приводит к порче базы данных и т.д. И всвязи с этим прошу наказать меня по всей строгости!
Народ, знаете, это такой действенный метод!!!!
MsGuns (2003-01-27 16:49:00) [4]>sniknik © (27.01.03 16:41)
>а самое главное потерянные данные обеспечены при таком подходе
Самое главное при таком подходе - это то, что все юзера смогут входить в проги только "дружною толпою" и после полчаса-часа переиндексаций. Классная будет прога !!!!
sniknik (2003-01-27 16:41:00) [5]Ag2002 (27.01.03 16:32)
будут стопудово, если таблици парадокс переваливают через какую то границу по размеру, то и сами таблици рушатся аварийном завершении.
а самое главное потерянные данные обеспечены при таком подходе.
Ag2002 (2003-01-27 16:32:00) [6]Нужно просто при старте проги пересоздавать индексы и всё подобных ошибок не будет никогда !!!
sniknik (2003-01-27 15:59:00) [7]Задачи разные, у меня главное "сидеть и не отсвечивать", в идеале чтобы юзер про меня вообще не знал но данные передавались лог велся и .т.д.
И потом не вижу ничего криминального в перезагрузке без завершения всех программ, все так делают.
Можно конечно и юзеров попинать, но есть и другие поводы, более понятные для них (ну почему ворд предлагает сохранится при перезагрузке а вот ваша прога это не отслеживает?).
ладно хватит, а то это уже на флейм похоже. (и все одно никто никого не убедит ;о))
Anatoly Podgoretsky (2003-01-27 15:44:00) [8]Административный метод, самый действенный.
MsGuns (2003-01-27 15:32:00) [9]Вопрос не в том, чтобы "реагировать" на каждый нерегламентированный аборт проги (это в принципе невозможно), а в том, чтобы отделить ядра от скорлупы, т.е. челов, которые УМЫШЛЕННО или ПО ЛЕНИ не выполняют все необходимые действия по закрытию программы, от ситуаций, когда вылетыпроисходят не по вине человека (отключение питания, сбой в компьютере, повреждение БД и т.д.) За 10 лет работы с сетевыми Парадокс-приложениями ничего лучше СПЕЦИАЛЬНОЙ ТАБЛИЦЫ СОСТОЯНИЙ, доступной только администратору БД и расположенной на ФАЙЛ-СЕРВЕРЕ, не видел. Эту систему когда-то подсмотрели мои коллеги по фирме у разработчиков "Галактики". Система не очень трудоемкая, зато достаточно надежна и эффективна. Главная ее задача - определение "пропавших" юзеров и фиксация логинов-логаутов КАЖДОГО узера. Мы разработали подобную для одного крупного заказчика (больше 20 станций),- через пару месяцев ее работы "абортов" стало на два порядка меньше,- администрация конторы быстренько разобралась с ленивыми и вредителями.
sniknik (2003-01-27 15:20:00) [10]вот от чего точно помогает
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1040751450&n=2
sniknik (2003-01-27 15:18:00) [11]MsGuns © (27.01.03 15:13)
ага ты еще про выключение рубильника вспомни. :о))
нет конечно. только штатные выключения прописанные регламентом виндовс.
MsGuns (2003-01-27 15:13:00) [12]sniknik © (27.01.03 15:06)
И от "RESET" помогает ? ;))
sniknik (2003-01-27 15:06:00) [13]в главной форме определяеш
procedure OnCloseSession(var Mess: TMessage); message WM_QUERYENDSESSION;
возможно понадобится и
procedure OnEndSession(var Mess: TMessage); message WM_ENDSESSION;
в описании процедур
procedure TMainForm.OnCloseSession(var Mess: TMessage); //WM_QUERYENDSESSION
begin
try
inherited;
//сдесь действия по закрытию таблиц
Mess.Result:= 1;
except
end;
end;
подробнее посмотри хелп в дельфях, (курсор на WM_QUERYENDSESSION + Ctrl+F1)
Evyshka (2003-01-27 14:49:00) [14]Но гораздо лутше конечно по оповещению системы WM_QUERYENDSESSION закрыть таблицы и нормально завершится, и никому никуда бегать не придется. :-)
Это как По подробнее Очень нужно:-))
sniknik (2003-01-27 11:15:00) [15]Догадываюсь :о)) и догадки подтверждабтся практикой, поэтому и считаю второе решение гораздо лутшим.
Anatoly Podgoretsky (2003-01-27 11:07:00) [16]Ты знаешь как в этом случае выходят, если программа не позволяет?
sniknik (2003-01-27 10:54:00) [17]Еще решение, оченьпростое!
Береш компонент TNMUDP с закладки FastNet ложиш на главную форму, все, проблема решена. Никто не сможет перегрузится/выключить компьютер предварительно не выйдя из вашей программы. (не считая кнопочек на корпусе или отключения питания, рассматриваем нормальное завершение какое у юзеров должно быть отработано до рефлексов :-)).
Но гораздо лутше конечно по оповещению системы WM_QUERYENDSESSION закрыть таблицы и нормально завершится, и никому никуда бегать не придется. :-)
Anatoly Podgoretsky (2003-01-27 10:24:00) [18]И будешь бегать постоянно к пользователю.
Бороться надо в первуб очередь с порчей индексов.
Evyshka (2003-01-27 10:11:00) [19]Большое спасибо так и сделаю :-))
Если программа долго выходит то так получится?
ZeroDivide (2003-01-27 10:04:00) [20]Элементарно: Пусть ваша прога, при ее загрузке, куда-то(реестр, файл) пишет флаг того, что юзер загрузил прогу. И при выходе пишет флаг что вышел. Юзер грузит прогу, прога смотрит "ага гад, флаг то что ты вышел не установлен. Штраф тебе 1000$. Беги к админам запускаться не буду".