Привет.
Хотелось сделать шаблон, создающий процедуру с заранее заданными параметрами, например
SomeProc PROCEDURE(STRING,STRING,STRING,STRING)
Однако такой код не катит:
#PROCEDURE(SomeProc,'Some procedure')
#PREPARE
#SET(%Prototype,'(STRING,STRING,STRING,STRING)')
#ENDPREPARE
Генератор говорит: "переменная %Prototype только для чтения".
Нельзя ли как-то всё же добиться желаемого?
С уважением, Михаил
Привет, Всем!
Как-то пару лет назад с Николаем Цигуро обсуждался такой вопрос, кажется, тогда пришли к выводу, что стандартными средствами никак этого не добиться.
Удачи!
__________________________________
Владимир Якимченко (ICQ: 16993194)
Привет, Всем!
Спасибо
Михаил
Написал: ClaList(2)
Процедурный шаблон
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
#TEMPLATE (NewVervion, 'Обновление версий приложений'),FAMILY('CW20')
#PROCEDURE(UpToNew,'Обновление'),WINDOW
#PROTOTYPE('(STRING,STRING,STRING,STRING)')
.......
%Procedure %ProcedureType(STRING1,STRING2,STRING3,STRING4)
и глянь н хелпник '#PROTOTYPE'
Vladimir Degtyarenko <vlad@v-ufal.chel.su> (tues)
Привет, Vladimir!
Точно, самое оно, спасибо.
Михаил
Hi,
Мы наверно что-то другое обсуждали. А с этим имхо проблем нет:
#PROTOTYPE( parameter list )
#PROTOTYPE Assigns the parameter list to the Prototype entry field.
parameter list A string constant containing the procedure's prototype parameter list (the entire procedure prototype without the leading procedure name) for the application's MAP structure (see the discussion of Procedure Prototypes in the Language Reference)
WBR, Nick Tsigouro. MailTo:Nick@arsis.ru
Спасибо
Михаил
Привет, Всем!
Вот уж точно, не за что
Пардон, посмотрите в еще сторону #PROTOTYPE, а что же мы тогда обсуждали? Возможность динамически изменять этот прототип? Склероз ...
Удачи!
Vladimir Yakimchenko <V.Yakimchenko@vaz.ru>
Написал: ClaList(2)
#PROCEDURE(UpToNew,'Обновление'),WINDOW
#PROTOTYPE('(STRING,STRING,STRING,STRING)')
.......
%Procedure %ProcedureType(STRING1,STRING2,STRING3,STRING4)
и глянь н хелпник '#PROTOTYPE'
Vladimir Degtyarenko <vlad@v-ufal.chel.su> (tues)
Привет, Vladimir!
Точно, самое оно, спасибо.
Михаил
Hi,
Мы наверно что-то другое обсуждали. А с этим имхо проблем нет:
#PROTOTYPE( parameter list )
#PROTOTYPE Assigns the parameter list to the Prototype entry field.
parameter list A string constant containing the procedure's prototype parameter list (the entire procedure prototype without the leading procedure name) for the application's MAP structure (see the discussion of Procedure Prototypes in the Language Reference)
WBR, Nick Tsigouro. MailTo:Nick@arsis.ru
Спасибо
Михаил
Привет, Всем!
Вот уж точно, не за что
Пардон, посмотрите в еще сторону #PROTOTYPE, а что же мы тогда обсуждали? Возможность динамически изменять этот прототип? Склероз ...
Удачи!
Vladimir Yakimchenko <V.Yakimchenko@vaz.ru>
Написал: ClaList(2)
Я поигрался вот так, и у меня работает (C5.5 ABC):
Открыть TemlateRegistry, Выбрать ABC Procedures Source(там все уже есть, что надо) наступить на Edit Definition
Добавить между шаблонами строчки:
В Аппликации
Создать ToDo у меня это item15
можно c Именем своей стандартной процедуры MyProc
Вызвать окно свойств, выбрать из списка Шаблонов MyProc
Описать прототипы согласно своей процедуры.(String,String),String
После генерации получим код
Дальше было лень. Не знаю, попал ли я ответом в вопрос.
Если вставлять в GlobalMap описание, то ругается.
Доделаете, получится - киньте ответ. Сегодня нет нужды, а завтра может понадобится.
Правда, смысла так делать большого не вижу. Поменяли шаблоны и привет. Лучше уж внешний файл CLW и его инклюд в нужное место. Или свои библиотеки лепить.
--
Best regards,
gorky mailto:gorky@sv3.net.ua
Написал: ClaList(2)
Открыть TemlateRegistry, Выбрать ABC Procedures Source(там все уже есть, что надо) наступить на Edit Definition
Добавить между шаблонами строчки:
Код: Выделить всё
#PROCEDURE(MYproc,'MYproc'),HLP('~TPLProcSource')#! Source procedure
#Boxed
#DISPLAY('Параметры должны быть (String,String),String') !Это для примера
#Endboxed
#set(%Parameters,'(x1,x2)')
%[20]Procedure PROCEDURE%Parameters
#INSERT(%FileControlInitialize)
#AT(%CustomGlobalDeclarations)
#INSERT(%FileControlSetFlags)
#ENDAT
#FOR(%LocalData)
%[20]LocalData %LocalDataStatement
#ENDFOR
#AT(%DataSection)
x3 string(20)
#endat
#EMBED(%DataSection,'Data Section'),DATA,TREE('Local Data{{PRIORITY(1000)}') #! Embedded Source Code
CODE
#EMBED(%ProcessedCode,'Processed Code'),LABEL #! Embedded Source Code
message('Its Code')
x3=x1&x2
return(x3)
#INSERT(%LocalMapCheck)
Создать ToDo у меня это item15
можно c Именем своей стандартной процедуры MyProc
Вызвать окно свойств, выбрать из списка Шаблонов MyProc
Описать прототипы согласно своей процедуры.(String,String),String
После генерации получим код
Код: Выделить всё
MEMBER('fl.clw') ! This is a MEMBER module
MAP
INCLUDE('FL015.INC'),ONCE !Local module procedure declarations
END
item15 PROCEDURE(x1,x2)
x3 string(20)
CODE
message('Its Code')
x3=x1&x2
return(x3)
Если вставлять в GlobalMap описание, то ругается.
Доделаете, получится - киньте ответ. Сегодня нет нужды, а завтра может понадобится.
Правда, смысла так делать большого не вижу. Поменяли шаблоны и привет. Лучше уж внешний файл CLW и его инклюд в нужное место. Или свои библиотеки лепить.
--
Best regards,
gorky mailto:gorky@sv3.net.ua
Написал: ClaList(2)
Привет, gorky!
Как раз хотелось избежать вписывать прототип процедуры кривыми ручками, поэтому #PROTOTYPE вполне подошёл. Жаль только, что у него нулевая гибкость (ни дописать параметры, ни задать возврат функции).
Кстати,
1) Создать файл Gorky.tpl
2) Добавить в него строчку
#TEMPLATE(GorkyTemplate,'Шаблоны Горького')
3) Зарегистрировать его в Template Registry
4 и далее) Добавлять в него строки типа
#include('gorkyqtb.tpw')
#include('gorkyemail.tpw')
по мере написания своих шаблонов (каждый шаблон оформлять одним файлом).
Тогда зависимость от изменения стандартных шаблонов исчезнет (хотя для С55 это неактуально)
С уважением, Михаил
Написал: ClaList(2)
Как раз хотелось избежать вписывать прототип процедуры кривыми ручками, поэтому #PROTOTYPE вполне подошёл. Жаль только, что у него нулевая гибкость (ни дописать параметры, ни задать возврат функции).
Кстати,
Лучше уж внешнийПравда, смысла так делать большого не вижу. Поменяли шаблоны и привет.
зачем это впихивать в стандартный шаблон? Советую Вам делать так:файл CLW и его инклюд в нужное место. Или свои библиотеки лепить.
1) Создать файл Gorky.tpl
2) Добавить в него строчку
#TEMPLATE(GorkyTemplate,'Шаблоны Горького')
3) Зарегистрировать его в Template Registry
4 и далее) Добавлять в него строки типа
#include('gorkyqtb.tpw')
#include('gorkyemail.tpw')
по мере написания своих шаблонов (каждый шаблон оформлять одним файлом).
Тогда зависимость от изменения стандартных шаблонов исчезнет (хотя для С55 это неактуально)
С уважением, Михаил
Написал: ClaList(2)