Режим ReadOnly .... ?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8033
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Режим ReadOnly .... ?

Сообщение Игорь Столяров »

Привет всем !

Есть программа, сделана на C63 ABC, БД TopSpeed - нужно предусмотреть в ней режим работы с БД "только просмотр".
Например при запуске с CD / DVD или с сетевого диска с правом только на чтение.

C помощью GlobalErrors.RemoveError(Msg:AccessDenied) можно выключить все сообщения об ошибках (они выдаются
когда нет прав на запись). А есть ли возможность также одной командой "выключить" все операторы Access:File.Insert() и Access:File.Update() ? Конечно можно вручную отработать и отключить все операции попытки изменения БД - но хотелось бы как-то этот процесс автоматизировать ...

Заранее спасибо за любые идеи.
Make Clarion Great Again ! 😎
Igor
Бывалый
Сообщения: 75
Зарегистрирован: 08 Июль 2005, 11:03
Откуда: Королев

Re: Режим ReadOnly .... ?

Сообщение Igor »

если ABC модель - Поробуй написать класс наследик от FileManager и в нем отключить все ненужные методы. В APP в закладке Global Propirties->Classes->File Management подключаешь свой класс.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Режим ReadOnly .... ?

Сообщение Yufil »

В своё время я работал в конторе, которая выпускала программы на компактах
Там при запуске программы сначала определялся адрес CD-ROM дисковода (или дисководов)

LOOP I#=0 TO 25
LOC:CdDir=CHR( VAL('A') + I# ) & ':\'
IF GETDRIVETYPE(LOC:CdDir)=5
CDQ:Drive=Loc:CdDir[1]
Add(CdQ)
END
End


Внутри FileManager.Open для базы сначала запрашивается имя каталога, где она живёт, потом выделяется имя
дисковода и проверяется, входит ли дисковод в список сетевых. Если это так, выполняется Self.SetOpenMode(ReadOnly)
Ответить