Можно ли откомпилировать из галактики с #CommissionLinkVar

Программирование на Atlantis: приемы и подходы, обмен опытом

Модераторы: larin, Screw

Sokolov
корпорация
Сообщения: 34
Зарегистрирован: Вт, 23/10/2007 14:15
Имя Фамилия: Александр Соколов
Откуда: Галактика-Урал
Контактная информация:

Можно ли откомпилировать из галактики с #CommissionLinkVar

Сообщение Sokolov » Чт, 27/09/2012 14:46

Можно ли форму, содержащую
"Define: однострочное макроопределение" или "Declare: многострочное макроопределение". Являются частью Макрокомпилятора.
скомпилировать прямо из галактики?
Если можно (не заменяя соответствующие строки на содержимое) - то как?

Наткнулся на форме
.LinkForm 'SLIC_SKL_N19_2' Prototype is 'INVVED'
.NameInList 'ИНВ № 19'


в теле RTF формы встречается 2 строки:
#CommissionLinkVar
#CommissionLinkInit(PrintPereo)

Буду рад любым комментариям.

Аватара пользователя
larin
корпорация
Сообщения: 228
Зарегистрирован: Пн, 10/09/2007 12:13
Имя Фамилия: Михаил Ларин
Откуда: ТопCофт
Контактная информация:

Re: Можно ли откомпилировать из галактики с #CommissionLinkVar

Сообщение larin » Ср, 03/10/2012 09:42

Да, конечно это можно сделать.

В данном случае макроопределение #CommissionLinkVar описано как

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

#declare CommissionLinkVar
.var
  // *** Объявление вспомогательных переменных ***
  Номер_члена_комиссии : word;

  // *** Объявление массивов *****
  Массив_Член_комиссии_nRec            : array[1..2] of comp;
  Массив_Член_комиссии_ФИО             : array[1..2] of string;
  Массив_Член_комиссии_Табельный_Номер : array[1..2] of string; // tTabN; LongInt;
  Массив_Член_комиссии_Должность       : array[1..2] of string;
.endvar
#end


Само описание находится в файле Commission.frn

Чтобы это описание было видно в компилируемой через Галактику отдельной форме вам нужно подключить файл с описаниями необходимых макроопредлений непосредсвенно в саму форму. С помощью директивы #include.

Пример:

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

#include Commission.frn
.LinkForm 'INVVED_331' Prototype is 'INVVED'
.Group 'Ведомости'
.NameInList 'Ведомость по итогам инвентаризацииss'
.p 60
#CommissionLinkVar
.fields
  CommonFormHeader
  дата_инвентаризации:'m:"DD" mon YYYY г.'
  склад
  мол
  мц_код
  мц_название
  ед_измерения
  количество
  партия
  дата_партии
  кол_инвентаризации
  цена_партии
.endfields
.begin
  Номер_члена_комиссии := 0;


  for (Номер_члена_комиссии := 1; Номер_члена_комиссии <= Count(Массив_Член_комиссии_nRec); Номер_члена_комиссии := Номер_члена_комиссии + 1)
  {
    Массив_Член_комиссии_nRec            [Номер_члена_комиссии] := comp(0);
    Массив_Член_комиссии_ФИО             [Номер_члена_комиссии] := '';
    Массив_Член_комиссии_Табельный_Номер [Номер_члена_комиссии] := '';
    Массив_Член_комиссии_Должность       [Номер_члена_комиссии] := '';
  }

  Номер_члена_комиссии := 0;
end.
.{CheckEnter COMMISSIONMEMBER_PRINTPEREO
.begin
  Номер_члена_комиссии := Номер_члена_комиссии + 1;
  Массив_Член_комиссии_nRec            [Номер_члена_комиссии] := Член_комиссии_nRec;
  Массив_Член_комиссии_ФИО             [Номер_члена_комиссии] := Член_комиссии_ФИО;
  Массив_Член_комиссии_Табельный_Номер [Номер_члена_комиссии] := string(Член_комиссии_Табельный_Номер);
  Массив_Член_комиссии_Должность       [Номер_члена_комиссии] := Член_комиссии_Должность;
end.
.}
.begin
  Номер_члена_комиссии := 0;
end.
^

        И Н В Е Н Т А Р И З А Ц И О Н Н А Я   В Е Д О М О С Т Ь.
                Дата инвентаризации ^

 Склад: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 МОЛ  : @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

.{
.[H OVERWRITE
────────────────┬───────────────────────────────────────────────────┬─────────────┬───────────┬────────────────┬────────────────
 Номенклатурный │               Наименование товара                 │   Единица   │Дата выявл.│   Количество   │ Цена в НДЕ
  номер товара  │                                                   │   измер.    │ остатков  │                │
────────────────┴───────────────────────────────────────────────────┴─────────────┴───────────┴────────────────┴────────────────
.]H
 @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@             &#'&&&&&&&&&&&&&
.if FLAGPARTY
.{
                     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ &#'&&&&&&&&&&&&& &#&&&&&&&&&&&.&&
.}
.else
.end
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
.}
.{while (Номер_члена_комиссии < Количество_членов_комиссии)
.begin
  Номер_члена_комиссии := Номер_члена_комиссии + 1;
end.
.}
.endform


Однако Галактику в данном случае нужно cконфигурировать также как вы конфигурируете компилятор командной строки VIP.EXE. А точнее вам нужно Галактике указать папки где искать файлы исходников дополнительно подключаемых через #include.

Для этого в файл конфигурации galnet.cfg вам нужно добавить ссылки на пути для поиска подключаемых файлов.

Пример:

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

[compilers]
   IncludesPath=D:\Gal\G81\sources\inc 
   IncludesPath=D:\Gal\G81\sources\CompSrc\F\F_Common\Frm


Или сокращенный вариант записи параметра IncludesPath - /i

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

/i:D:\Gal\G81\sources\inc 
/i:D:\Gal\G81\sources\CompSrc\F\F_Common\Frm


Хотя не понятно почему вы хотите выполнять компиляцию в прямо в Галактике. И возится с каждой формочкой по отдельности. На много удобнее исходные коды форм держать на диске в определенных папках. Сделать для всех форм общий проектный файл .PRJ. В этот файл глобально подключить все нужные определения #include. Подключить нужные формы #make. Компилировать все формы в одном проекте в интегрированной среде разработки Viper.


Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя