Share via


ASTACKINFO( ) (Función)

Devuelve una matriz que proporciona información acerca del objeto de programa, aplicación o servidor COM que se está ejecutando.

AStackInfo(ArrayName)

Parámetros

  • ArrayName
    Especifica el nombre de la matriz que contendrá la información relativa al objeto examinado. La tabla siguiente describe la información devuelta por la función ASTACKINFO( ):
    Elemento de matriz Descripción
    1 Nivel de pila de llamadas
    2 Nombre de archivo del programa actual
    3 Nombre de módulo o de objeto
    4 Nombre de archivo de origen del módulo u objeto
    5 Número de línea en el archivo de origen del objeto
    6 Contenido de la línea de origen

Valor devuelto

Numérico

Observaciones

ASTACKINFO( ) llena una matriz con información acerca de la pila de llamadas completa. Combina la funcionalidad de SYS(16) y Program( ), al tiempo que agrega compatibilidad con números de línea en cada nivel de la pila de llamadas. El valor devuelto es el número de niveles de programa o de filas de la matriz devuelta.

ASTACKINFO( ) sólo llena el sexto elemento de la matriz si está disponible el contenido de la línea de origen; de lo contrario, lo deja en blanco.

ASTACKIINFO( ) proporciona, en los elementos segundo y cuarto respectivamente, el nombre del archivo actual y, si el archivo está enlazado en un APP o en otro archivo separado, la ruta de acceso completa del programa de enlace.

El cuarto elemento contiene la información original del archivo de origen. Para los objetos, esta información es la misma que devuelve SYS(16), incluso cuando se encuentran enlazados dentro de aplicaciones.

Nota   Para los archivos PRG, puede ser difícil reunir esta información. En este caso, simplemente se muestra el segundo elemento, de forma parecida a lo que hace en la actualidad SYS(16).

Ejemplo

Un formulario sin modo enlazado en un archivo APP (myAppl.app) con un botón procedente de la clase buttons.vcx (también en el APP). El programador ejecuta myAppl.app en Visual FoxPro para mostrar el formulario (el formulario permanece abierto, porque no se trata de Visual FoxPro en el entorno de tiempo de ejecución). Cuando el usuario hace clic en el botón para ejecutar el informe, éste (que existe fuera de myAppl.app) llama a un formulario de consulta por medio de su evento BeforeOpenTables.

Este formulario de consulta (getcusts.scx), que reside en el interior de myAppl.app, emite una llamada a ASTACKINFO( ) [a continuación, muestra la matriz resultante como en el ejemplo siguiente].

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 

Vea también

Matrices | Objetos | Ventana Pila de llamadas | LINENO( ) | PROGRAM( )