Создает массив и заполняет его информацией о текущем состоянии стека вызовов.
ASTACKINFO(ArrayName) |
Параметры
- ArrayName
- Определяет имя массива, чтобы сохранить информацию о стеке вызовов. Следующая таблица описывает информацию, возвращаемую функцией ASTACKINFO( ):
Элемент Массива Описание 1
Уровень Стека вызовов
2
Текущее имя файла программы
3
Модуль или имя Объекта
4
Модуль или имя файла-ресурса объекта
5
Номер строки в файле-ресурсе объекта
6
Содержание ресурсной строки
Возвращаемое значение
Числовое
Замечания
ASTACKINFO( ) заполняет массив информацией о всем стеке вызовов. Она объединяет функциональные возможности функций SYS(16) и PROGRAM( ), добавляя новую возможность возвращать номера строки для каждого уровня стека вызовов. Возвращаемое значение - количество уровней вложения программ или строк возвращенного массива.
ASTACKINFO( ) заполняет 6-ой элемент массива только, если содержание ресурсной строки доступно, иначе он будет оставлен пустым.
ASTACKINFO( ) обеспечивает, во 2-ом и 4-ом элементах соответственно, имя текущего файла и, если файл связан с APP или другим отдельным файлом, полное имя пути к связанной программе.
4-ый элемент содержит первоначальную информацию ресурсного файла. Для объектов, это - та же самая информация, возвращаемая SYS(16), даже когда связь образована в пределах приложения.
Обратите внимание: |
---|
ASTACKINFO () может не найти информацию о программных (.prg) файлах. В этом случае, Visual FoxPro отображает 2-ой элемент, подобно функции SYS(16). Для подробной информации, см. SYS(16) - Имя Исполняемого Программного файла . |
Пример
Немодальная форма, связывается в APP файле (myAppl.app) с кнопкой buttons.vcx класса (также в APP). Разработчик выполняет myAppl.app в Visual FoxPro, чтобы отобразить форму (форма остается открытой, потому что это - не Visual FoxPro run time). Когда пользователь щелкает на кнопке, чтобы выполнить отчет, отчет (который существует вне myAppl.app), вызывает форму запроса в своем событии BeforeOpenTables.
Эта форма запроса (getcusts.scx), которая постоянно находится в myAppl.app, вызвает ASTACKINFO( ) [затем отображается массив результатов как в следующем примере] .
Скопировать код | |
---|---|
ASTACKINFO(myarray) DISPLAY MEMO LIKE myarray myArray (1,1) 1 && Stack level = 1 (1,2) c:\vfp\myAppl.app && Current program (1,3) frmRerport.PrintReport.Click && Object (1,4) c:\vfp\myclasses\buttons.vct && Object source file name (1,5) 42 && Line number in the source (1,6) THISFORM.DoReport() && in the source (2,1) 2 && Stack level = 2 (2,2) c:\vfp\myAppl.app (2,3) frmRerport.DoReport (2,4) c:\vfp\forms\frmRerport.sct && Module source file name (2,5) 31 (2,6) DO RunListReport && in the source (3,1) 3 && Stack level = 3 (3,2) c:\vfp\myAppl.app (3,3) (3,4) c:\vfp\programs\runlisterport.prg && Module source file name (3,5) 12 (3,6) REPORT FORM myreport1.frx && in the source (4,1) 4 && Stack level = 4 (4,2) c:\vfp\reports\myreport1.frt (4,3) myreport1.DataEnvironment.BeforeOpenTables (4,4) c:\vfp\reports\myreport1.frt && Module source file name (4,5) 31 (4,6) DO FORM getcusts && in the source (5,1) 5 && Stack level = 5 (5,2) c:\vfp\myAppl.app (5,3) getcusts.init (5,4) c:\vfp\forms\getcusts.sct && Module source file name (5,5) 2 (5,6) ASTACKINFO(myarray) && in the source |
См. Также
Другие Ресурсы
МассивыОбъекты
Окно Стека вызовов
LINENO( ) Функция
PROGRAM( ) Функция
Функции
Справочник Языка