Страница 1 из 1
					
				PutEventById
				Добавлено: 27 дек 2004, 09:11
				 hope
				Добрый день!
Пытаюсь сделать свою форму на vip-е.
При компиляции выдается ошибка: нет такой функции, метода или поля, или неверный контекст использования: fcc1.
Ругается на строчку:
frm36mkhp.PutEventById(feDoLoop, fcc1);
Пробовала менять название переменной с1 на другие - не помогает. В чем может быть проблема?
Вот кусочек кода: 
   RUNDIALOG(forma36_PAS,D1,D2);
   RUNINTERFACE(getsklad,MyPodr);
   RUNINTERFACE(getsomemc,-12345,-12346);
   frm36mkhp.write(d1,0);
   frm36mkhp.write(d2,0);            
   frm36mkhp.write(katpodr.name,0);
   // цикл по МЦ
   if (modifier getfirst pickname=tsok)
   do
   {
      frm36mkhp.PutEventById(feDoLoop, fcc1);
      frm36mkhp.write(katmcpick.name,0);
   }
   While (modifier getnext pickname=tsok)
			 
			
					
				Re: PutEventById
				Добавлено: 27 дек 2004, 09:24
				 hope
				Может ругается на константу события feDoLoop?
			 
			
					
				Re: PutEventById
				Добавлено: 27 дек 2004, 10:12
				 oiko
				в випе должно присутствовать в самом начале типа таких строк
const
#include myconst.inc
end;
а в файле myconst.inc
должна быть строка наподобие
fcc1=1234;
			 
			
					
				Re: PutEventById
				Добавлено: 27 дек 2004, 10:31
				 hope
				Спасибо!
Переменную с1 я писала в интерфейсе как Word, но значения нигде не присваивала.
Все-равно необходимо fсс1 описывать как константу в include файле?
В include файле fcc1 можно задать произвольное значение? (просто у меня еще есть переменные циклов - им можно давать любое значение?)
			 
			
					
				Re: PutEventById
				Добавлено: 27 дек 2004, 12:17
				 Goblin
				Не надо никаких include'ов ...
Просто перед компиляцией надо скопилировать прототип  и все .Копилятор сам создаст и присвоит значения встречающимся константам из имеющихся свободных - для cm'ов кнопочных ведь не пишете ничего ? Вот и здесь не надо ...
			 
			
					
				Re: PutEventById
				Добавлено: 27 дек 2004, 13:48
				 oiko
				Туманову О.В.:
Можно и так, но как я написал тоже работает.
Не люблю полагаться на компилятор.
to HOPE:
в випе эту константу описывать не нужно только в секции const.
			 
			
					
				Re: PutEventById
				Добавлено: 27 дек 2004, 17:08
				 hope
				Всем спасибо!
Обошлась вариантом Олега: откомпилила сначала форму, а затем интерфейс, в котором она заполняется.
			 
			
					
				Re: PutEventById
				Добавлено: 29 дек 2004, 16:24
				 ecasoft
				На диске после компиляции форм создается файл с расширением fnc. В нем лежат значения констант, которые подобрал компилятор форм. Но они еще и в ресурснике лежат с некоторой версии..поэтому действительно..вначале компилируется FRM, а затем VIP и думать о константах не надо. Чтобы не заморачиваться лучше писать проекты для сборки своих разработок и там описывать, что и в какой последовательности будет компилироваться.
Проекты удобны еще и тем, позволяют делать маке - т.е. перекомпилировать  только измененные файлы, а не все.
 Если некоторый интерфейс вызывает другой, то вызываемый лучше компилировать первым, чтобы проверялись параметры.
			 
			
					
				Re: PutEventById
				Добавлено: 29 дек 2004, 16:50
				 Deinis
				А какие команды, кроме #MAKE там еще могут использоваться???
Банальный #include - это понятно.
Знаю, что прямо там можно описывать константы, которые будут понятны всем интерфейсам проекта.
CONST
MyCONST = 4 ;
...
END
Там же можно описывать таблицы в памяти, которые будут понятны всем интерфейсам в проекте:
Table struct ...
Интефейсы компилятся командой
#make "_полный_путь_до_файла_с_фейсом"
или
#make '_полный_путь_до_файла_с_фейсом'
либо можно и так (если запуск компилятора осуществляется из текущей папки с проектом)
#MAKE '*.vip'
#MAKE 'ProcessDoc\ProcessDoc.vip'
#MAKE '*.frm'
А какие еще команды есть?
			 
			
					
				Re: PutEventById
				Добавлено: 30 дек 2004, 10:32
				 Maverick
				Ну, можно делать 
#DEFINE и #DECLARE, причем описанные макроопределения будут доступны во всех, описанных ниже интерфейсах и формах...
а вообще - читайте РТФМ )
			 
			
					
				Re: PutEventById
				Добавлено: 30 дек 2004, 14:43
				 Deinis
				С #DEFINE и #DECLARE тоже знакомы 
А как использовать переменные окружения?
В файле vip.cfg пишу:
/#MyPath=D:\VIP\WORK\DZ
В файле D:\VIP\WORK\DZ\ProcessDoc\ProcessDoc.vip пишу
#INCLUDE %MyPath%\ProcessDoc\SomeProcedures.vpp
Компилятор выдает ошибку:
Ошибка: Ошибка при при открытии include файла (стр.264, поз.48 в ProcessDoc\ProcessDoc.vip) #INCLUDE %MyPath%\ProcessDoc\SomeProcedures.vpp
 
			 
			
					
				Re: PutEventById
				Добавлено: 30 дек 2004, 15:50
				 Maverick
				хм... ну у нас все батником запускаетмя ...
и все работает...
вот пример
BAT-файл
set ATLANTIS=E:\Atlantis\Atl711.2508
set iProject=.
set VipGals=%Atlantis%\Src
@echo ***!!!!!!!!!!***
%ATLANTIS%\EXE\vip.exe /c=%iProject%\vip.cfg %iProject%\make.prj
@echo ***done!***
==========
PRJ
#make '%iProject%\Other\Zar\*.rtf'
#make '%iProject%\Other\Zar\*.vip'
#make '%iProject%\Other\Kassa\*.frm'
#make '%iProject%\Other\Kassa\*.rtf'
#make '%iProject%\Other\Kassa\*.vip'
#make '%iProject%\KADR.APP\stafmain.mnu'// главное меню кадров
#make '%iProject%\KADR.APP\*.frm'
#make '%iProject%\KADR.APP\*.rtf'
#make '%iProject%\KADR.APP\*.slk'
#make '%iProject%\KADR.APP\*.vip'
в CFG 
....
[Compilers]
Build=Off
ClearResource=Off
ErrorLevel=2
Full=Off
IncludesPath:=%iProject%;
/I=%atlantis%\EXE\
/I=%atlantis%\SOURCE\
Make=Off
OutputResourceName=%iProject%\debug.res
Run=Off
...
так что и PRJ и CFG понимают переменные
			 
			
					
				Re: PutEventById
				Добавлено: 30 дек 2004, 16:38
				 Max_Fin
				В #INCLUDE не допускается использование переменнных окружения.
Обойти можно с помошью cfg в котором
[Compilers]
..
/I=%MyPath%\ProcessDoc\
..
В проекте соотвественно будет строка:
#INCLUDE SomeProcedures.vpp
			 
			
					
				Re: PutEventById
				Добавлено: 03 янв 2005, 13:44
				 hope
				А если я хочу еще использовать временную таблицу в памяти?
Как должен выглядеть мой проект? так правильно:
#include 4Tov_Obor.inc
#make "4Tov_Obor.frm"
#make "4Tov_Obor.vip"
Опять ругается на переменную цикла.
Что там за логика заложена? может где почитать можно?