Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
07.06.2012, 15:11
|
|||
---|---|---|---|
|
|||
Директивы препроцессора #insert и #name. |
|||
#18+
Для чего нужны директивы #insert и #name ? Из описания в хелпе ничего толком не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.06.2012, 16:52
|
|||
---|---|---|---|
Директивы препроцессора #insert и #name. |
|||
#18+
Строго говоря, эти директивы не являются директивами прекомпилятора FoxPro. Это директивы генератора меню. Предположим, Вы содаете макет меню в построителе меню. В столбце Prompt указываете название пункта меню, в столбце "Result" выбираете "Procedure" и нажимете кнопку Create/Edit чтобы начать редактировать процедуру. Хорошо. Создали Вы текст процедуры, затем выполнили генерацию меню и получили файл с раширением MPR. Если открыть этот файл MPR на редактирование командой вида Код: sql 1.
то Вы увидите, что был сформирован примерно такой код Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Т.е. имя процедуры, вызываемой из пункта меню было сгенерировано автоматически и представляет собой совершенно не читаемую последовательность символов "_3ir0zerer". Причем это имя при каждй новой генерации меню будет новым. В большинстве случаев, имя подобной процедуры роли не играет. Однако иногда желательно иметь бОльшую определенность в имени процедуры. Например, чтобы иметь возможность вызвать эту же процедуру из другого пункта меню. Вот директива прекомпилятора #name как раз и решает данную задачу. Если в окне редактирования текста процедуры построителя макета меню первой командой написать Код: sql 1.
то после генерации меню и просмотра сформированного mpr-файла увидим уже что-то вроде такого кода Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Другими словами, директива #name используется для того, чтобы при генерации программного кода из предварительно созданного макета меню можно было бы указать имена конкретных процедур. Просто нет другого способа это сделать непосредственно в построителе макета меню. Хотя, на практике, это почти бесполезное занятие, поскольку если процедура должна вызываться из нескольких мест, то удобнее создавать ее явным образом в блоке Cleanup построителя меню. Или в отдельном процедурном файле. Для похожих целей используется и директива #insert. Для вставки некоего фрагмента кода в файл MPR при генерации меню из макета меню. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=41&mobile=1&tid=1583631]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 261ms |
total: | 397ms |
0 / 0 |