Назначить константу О_о

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Назначить константу О_о

Сообщение Masygreen »

Невероятно .. но ...
в настройках лежит ценные данные :)
в программа состоит из множества интерфейсов, описных во множестве файлов
хочу что то вроде .. чего можете предложить ? или в каждом модуле каждый раз настройку дергать ?

Код: Выделить всё

const
mИмяМоейКонстанты = cogettune('Значение необходимой настройки');
end;
Время ведет!
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Назначить константу О_о

Сообщение Vik »

Например, разделяемый интерфейс с соответствующими методами или пропертями, либо интерфейс со статическими методами. Ну или еще вариант просто define cделать.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Назначить константу О_о

Сообщение Masygreen »

Vik писал(а):Например, разделяемый интерфейс с соответствующими методами или пропертями, либо интерфейс со статическими методами. Ну или еще вариант просто define cделать.
поясни идею.. чего то совсем не понял в какую сторону думать ?
Время ведет!
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Назначить константу О_о

Сообщение 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) { .... }
Либо, этот интерфейс можно зарегистрировать как глобальную библиотеку и в коде просто вызывать:

Код: Выделить всё

 if ( myConst1 = 777h ) { ... }
Регистрация

Код: Выделить всё

Handler with replace ConstKeeper_RegisterGlobalIfc on ExtensionPoint epAppInit
Action
{
  RegisterGlobalIfc('MY_COMP::ConstKeeper');
  Result := TRUE;
}
В файле проекта:

Код: Выделить всё

global My_Comp::ConstKeeper;
3) Дефайны (ну этот вариант позволяет просто в одном месте описать все, а дальше в коде вызывать свои определения какого-то функционала)

Код: Выделить всё

#define myConst1 coGetTune('MY_TUNE') 
...
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Назначить константу О_о

Сообщение Masygreen »

Печаль .. надо именно константу ... не буду же я #define в каждом файле писать .. тогда какая разница ... я хочу 1 раз описать её и не предавать как параметр..

Код: Выделить всё

#define nRecGrNal cogettune('МояНастройка');
//константы в проекте
const
mtcnRecGrNal = #nRecGrNal;
end;
Время ведет!
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Назначить константу О_о

Сообщение n0where »

Masygreen
в инклуд затолкать не судьба? чтобы не прописывать постоянно.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Назначить константу О_о

Сообщение Masygreen »

n0where писал(а):Masygreen
в инклуд затолкать не судьба? чтобы не прописывать постоянно.
итишкин кот :)
конечно в инклуде лежат у меня константы .. но мне нужна вычисляемая константа... как её сделать я и спрашиваю ...
Время ведет!
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Назначить константу О_о

Сообщение Masygreen »

ни когда просто не пользовался #define,#DECLARE не пойму где и как один раз определить вычисляемое значение дабы его использовать далее....
Время ведет!
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Назначить константу О_о

Сообщение n0where »

По логике конечно константа не может быть вычисляемой, в var не проще запихать?
Ну сделал лишнюю функцию по заполнению переменных и усе
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Назначить константу О_о

Сообщение Masygreen »

n0where писал(а):По логике конечно константа не может быть вычисляемой, в var не проще запихать?
Ну сделал лишнюю функцию по заполнению переменных и усе
дело в том что у меня проект 20 файлов vip, я активно пользовался константами которые описаны один раз в const.inc...
теперь пришла идея часть констант вынести в настройки - дабы добавить гибкости программе... собственно из этого и заморочка, сегодня я решил получить это из настройки, завтра в результате работы функции, сейчас просто число .. все это однозначно решается в момент запуска 1 раз, вот и хотелось бы как то на константы повлиять ...
Походу вывод один .. написать функции получения этих переменных ... :(
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Назначить константу О_о

Сообщение edward_K »

если вы хотите программно задавать это уже не константа. Если глобально - то можете сделать файл с переменными и включать его либо в проект, либо в каждый файл - наподобие сделано в транспорте. Вопрос тока как понять что вы уже туда записали. тут тогда можно отлавливать событие при входе в модуль. А вообще почему бы вам не сделать свои настройки?. Ищите ObjStartCreateTuneEx или просто CreateTune
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Назначить константу О_о

Сообщение Masygreen »

сделал пользовательские настройки
Время ведет!
Ответить