Freigeben über


ASTACKINFO( )-Funktion

Gibt ein Array zurück, das Informationen über ein Objekt in dem zurzeit aktiven Programm, in der aktiven Anwendung oder auf dem aktiven COM-Server enthält.

AStackInfo(ArrayName)

Parameter

  • ArrayName
    Gibt den Namen des Arrays an, das die Informationen zum geprüften Objekt enthält. In der folgenden Tabelle werden die Informationen beschrieben, die von der ASTACKINFO( )-Funktion zurückgegeben werden:
    Arrayelement Beschreibung
    1 Ebene der Aufrufliste
    2 Dateiname des aktuellen Programms
    3 Name des Moduls oder Objekts
    4 Dateiname der Quelle des Moduls oder Objekts
    5 Zeilennummer in der Quelldatei des Objekts
    6 Inhalt der Quellcodezeile

Rückgabewert

Numerisch

Hinweise

ASTACKINFO( ) füllt ein Array mit Informationen zur gesamten Aufrufliste auf. Darin sind die Funktionen von SYS(16) und Program( ) kombiniert, wobei zusätzlich auf jeder Ebene der Aufrufliste auch Zeilennummern unterstützt werden. Der zurückgegebene Wert gibt die Anzahl der Programmebenen oder der Zeilen des zurückgegebenen Arrays an.

ASTACKINFO( ) füllt das sechste Arrayelement nur auf, wenn der Inhalt der Quellcodezeile verfügbar ist. Andernfalls bleibt es leer.

ASTACKIINFO( ) liefert im zweiten und vierten Element den Namen der aktuellen Datei und, wenn die Datei an ein APP oder eine andere separate Datei gebunden ist, einen vollständigen Pfadnamen zum Bindungsprogramm.

Das vierte Element enthält die ursprünglichen Quelldateiinformationen. Bei Objekten sind das die gleichen Informationen, die von SYS(16) zurückgegeben werden, auch wenn die Bindung in Anwendungen erfolgt.

Anmerkung   Bei PRG-Dateien kann es beim Sammeln dieser Informationen zu Schwierigkeiten kommen. In diesem Fall wird das zweite Element in ähnlicher Weise wie bei SYS(16) angezeigt.

Beispiel

Ein nicht modales Formular, das in eine APP-Datei (myAppl.APP) gebunden wird, das über eine Schaltfläche der buttons.VCX-Klasse (auch in der APP) verfügt. Der Entwickler führt myAppl.APP in Visual FoxPro aus, um das Formular anzuzeigen (das Formular bleibt geöffnet, da die Visual FoxPro-Laufzeitunterstützung nicht gegeben ist). Wenn der Benutzer auf die Schaltfläche klickt, um den Bericht auszuführen, dann ruft der Bericht (der außerhalb von myAppl.APP gespeichert ist) im BeforeOpenTables-Ereignis ein Abfrageformular auf.

Dieses Abfrageformular (getcusts.SCX), das sich in myAppl.APP befindet, gibt einen Aufruf an ASTACKINFO( ) ab [und zeigt das daraus resultierende Array wie im folgenden Beispiel gezeigt an].

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 

Siehe auch

Arrays | Objekte | Fenster "Aufrufliste" LINENO( ) | PROGRAM( )