Functions.AStackInfo 方法 | |
-- todo --
创建一个数组并用当前调用堆栈状态的信息填充它。
命名空间:
XSharp.VFP
程序集:
XSharp.VFP (在 XSharp.VFP.dll 中) 版本:2.22 GA
语法 FUNCTION AStackInfo(
ArrayName
) AS USUAL CLIPPER
[ClipperCallingConventionAttribute(new string[] { ... })]
public static __Usual AStackInfo(
__Usual ArrayName = default
)
查看代码参数
- ArrayName (Optional)
- 类型:__Usual
指定用于存储调用堆栈信息的数组名称。
返回值
类型:
__Usual
数值
备注
下表描述了 AStackInfo( ) 函数返回的信息:
1 | 调用堆栈级别 |
2 | 当前程序文件名 |
3 | 模块或对象名称 |
4 | 模块或对象源文件名 |
5 | 对象源文件中的行号 |
6 | 源代码行内容 |
AStackInfo( ) 用整个调用堆栈的信息填充数组。
它结合了 SYS(16) 和 Program( ) 函数的功能,同时为每个调用堆栈级别添加了新的行号支持。
返回值是程序级别数量或返回数组的行数。
只有在源代码行内容可用时,AStackInfo( ) 才会填充第 6 个数组元素,否则将留空。
AStackInfo( ) 在第 2 和第 4 个元素中分别提供当前文件的名称,
如果文件绑定在 APP 或其他单独文件中,则提供绑定程序的完整路径名。
第 4 个元素包含原始源文件信息。
对于对象,这与 SYS(16) 返回的信息相同,即使绑定在应用程序内部也是如此。
AStackInfo() 可能无法检索有关程序(.prg)文件的信息。
在这种情况下,X# 显示的第 2 个元素类似于 SYS(16) 函数。有关更多信息,请参见 SYS(16) - 执行程序文件名。
示例 1AStackInfo(myarray)
2Display MEMO LIKE myarray
3myArray
4(1,1) 1
5(1,2) c:\vfp\myAppl.app
6(1,3) frmRerport.PrintReport.Click
7(1,4) c:\vfp\myclasses\buttons.vct
8(1,5) 42
9(1,6) THISForM.DoReport()
10(2,1) 2
11(2,2) c:\vfp\myAppl.app
12(2,3) frmRerport.DoReport
13(2,4) c:\vfp\forms\frmRerport.sct
14(2,5) 31
15(2,6) DO RunListReport
16(3,1) 3
17(3,2) c:\vfp\myAppl.app
18(3,3)
19(3,4) c:\vfp\programs\runlisterport.prg
20(3,5) 12
21(3,6) REPORT ForM myreport1.frx
22(4,1) 4
23(4,2) c:\vfp\reports\myreport1.frt
24(4,3) myreport1.DataEnvironment.BeforeOpenTables
25(4,4) c:\vfp\reports\myreport1.frt
26(4,5) 31
27(4,6) DO ForM getcusts
28(5,1) 5
29(5,2) c:\vfp\myAppl.app
30(5,3) getcusts.init
31(5,4) c:\vfp\forms\getcusts.sct
32(5,5) 2
33(5,6) AStackInfo(myarray)
参见