Страница 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
				сделал пользовательские настройки