Страница 1 из 1
Назначить константу О_о
Добавлено: 25 апр 2011, 13:41
Masygreen
Невероятно .. но ...
в настройках лежит ценные данные

в программа состоит из множества интерфейсов, описных во множестве файлов
хочу что то вроде .. чего можете предложить ? или в каждом модуле каждый раз настройку дергать ?
Код: Выделить всё
const
mИмяМоейКонстанты = cogettune('Значение необходимой настройки');
end;
Re: Назначить константу О_о
Добавлено: 25 апр 2011, 14:14
Vik
Например, разделяемый интерфейс с соответствующими методами или пропертями, либо интерфейс со статическими методами. Ну или еще вариант просто define cделать.
Re: Назначить константу О_о
Добавлено: 25 апр 2011, 14:28
Masygreen
Vik писал(а):Например, разделяемый интерфейс с соответствующими методами или пропертями, либо интерфейс со статическими методами. Ну или еще вариант просто define cделать.
поясни идею.. чего то совсем не понял в какую сторону думать ?
Re: Назначить константу О_о
Добавлено: 25 апр 2011, 14:46
Vik
Ну, например:
1) Разделяемый интерфейс.
Код: Выделить всё
ObjInterface ObjConstKeeper
property myConst1 : comp read;
.......
end;
VipInterface ConstKeeper implements ObjConstKeeper;
Interace ConstKeeper
property ObjConstKeeper.myConst1 : comp read coGetTune('MY_TUNE');
...
end;
файл ConstKeeper.var
pi_constKeeper: ConstKeeper;
где-то в коде :
#include ConstKeeper.vih
.....
var
#include ConstKeeper.var
...
if (pi_constKeeper.myConst1 != 0) { .... }
...
2) Интерфейс и статические методы:
Код: Выделить всё
VipInterface ConstKeeper;
public:
static myConst1: comp;
...
end;
Где-то в коде:
#include ConstKeeper.vih
if (ConstKeeper::myConst1 != 0) { .... }
Либо, этот интерфейс можно зарегистрировать как глобальную библиотеку и в коде просто вызывать:
Регистрация
Код: Выделить всё
Handler with replace ConstKeeper_RegisterGlobalIfc on ExtensionPoint epAppInit
Action
{
RegisterGlobalIfc('MY_COMP::ConstKeeper');
Result := TRUE;
}
В файле проекта:
3) Дефайны (ну этот вариант позволяет просто в одном месте описать все, а дальше в коде вызывать свои определения какого-то функционала)
Re: Назначить константу О_о
Добавлено: 26 апр 2011, 14:22
Masygreen
Печаль .. надо именно константу ... не буду же я #define в каждом файле писать .. тогда какая разница ... я хочу 1 раз описать её и не предавать как параметр..
Код: Выделить всё
#define nRecGrNal cogettune('МояНастройка');
//константы в проекте
const
mtcnRecGrNal = #nRecGrNal;
end;
Re: Назначить константу О_о
Добавлено: 26 апр 2011, 14:28
n0where
Masygreen
в инклуд затолкать не судьба? чтобы не прописывать постоянно.
Re: Назначить константу О_о
Добавлено: 26 апр 2011, 14:30
Masygreen
n0where писал(а):Masygreen
в инклуд затолкать не судьба? чтобы не прописывать постоянно.
итишкин кот
конечно в инклуде лежат у меня константы .. но мне нужна вычисляемая константа... как её сделать я и спрашиваю ...
Re: Назначить константу О_о
Добавлено: 26 апр 2011, 14:37
Masygreen
ни когда просто не пользовался #define,#DECLARE не пойму где и как один раз определить вычисляемое значение дабы его использовать далее....
Re: Назначить константу О_о
Добавлено: 26 апр 2011, 14:42
n0where
По логике конечно константа не может быть вычисляемой, в var не проще запихать?
Ну сделал лишнюю функцию по заполнению переменных и усе
Re: Назначить константу О_о
Добавлено: 26 апр 2011, 14:48
Masygreen
n0where писал(а):По логике конечно константа не может быть вычисляемой, в var не проще запихать?
Ну сделал лишнюю функцию по заполнению переменных и усе
дело в том что у меня проект 20 файлов vip, я активно пользовался константами которые описаны один раз в const.inc...
теперь пришла идея часть констант вынести в настройки - дабы добавить гибкости программе... собственно из этого и заморочка, сегодня я решил получить это из настройки, завтра в результате работы функции, сейчас просто число .. все это однозначно решается в момент запуска 1 раз, вот и хотелось бы как то на константы повлиять ...
Походу вывод один .. написать функции получения этих переменных ...

Re: Назначить константу О_о
Добавлено: 26 апр 2011, 14:53
edward_K
если вы хотите программно задавать это уже не константа. Если глобально - то можете сделать файл с переменными и включать его либо в проект, либо в каждый файл - наподобие сделано в транспорте. Вопрос тока как понять что вы уже туда записали. тут тогда можно отлавливать событие при входе в модуль. А вообще почему бы вам не сделать свои настройки?. Ищите ObjStartCreateTuneEx или просто CreateTune
Re: Назначить константу О_о
Добавлено: 26 апр 2011, 15:41
Masygreen
сделал пользовательские настройки