|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
как узнать запущена ли программа
доброго времени суток!
проблема такая...есть программа с базами данных....нужно осуществить переиндексацию баз...программа работает в многопользовательском режиме - у нескольких пользователей. естесно переиндексацию можно выполнять только в эксклюзивном режиме. как узнать запущена ли программа у каких-нибудь пользователей? т.е. при нажатии "Переиндексировать базу данных" осуществляется проверка запущена ли уже копия программы, если да, то выдает сообщение, если нет - то проводит переиндексацию. если в момент переиндексации другой пользователь открывает программу, выходит сообщение о том, что в данный момент идет переиндексация. |
#2
|
||||
|
||||
смотря что за база данных, подход может быть различным. серверная СУБД: kick all users, listener disable. файловая БД - exclusive mode.
Пишу программы за еду. __________________ |
#3
|
||||
|
||||
база - 2 файла dbf, подцепленные к программе посредством ini файла
|
#4
|
||||
|
||||
ну наверняка они на сервере? shared folders to close == exclusive mode
Пишу программы за еду. __________________ |
#5
|
||||
|
||||
не совсем это имела ввиду....мне же надо сначала проверку пустить, открыта ли программа еще у кого....я думала делать CreateFile при каждом запуске программы....и этот файл нельзя будет удалить пока открыта программа....т.е. сделать проверку существования таких файлов...и если они есть - вывести окно о невозможности перехода в эксклюзивный режим, если же нет, то тогда произвести переиндексацию...
базы да, на сервере |
#6
|
||||
|
||||
если кому-то будет интересно...вышла из положения следующим путем:
в FormCreate занесла Код:
FileHandle:=FileCreate('semafor.txt'); //создала файл FileClose(FileHandle);//закрыла FileHandle:=FileOpen('semafor.txt', fmShareDenyNone);//открыла файл в многопользовательском режиме Код:
FileClose(FileHandle); if DeleteFile('semafor.txt') then begin //переиндексация FileHandle:=FileCreate('semafor.txt'); FileClose(FileHandle); FileHandle:=FileOpen('semafor.txt', fmShareDenyNone); ShowMessage('Переиндексация успешно завершена!'); end else ShowMessage('Переиндексация невозможна!'); end; |