Wie debugge ich am einfachsten die AFPX
Ich habe mir das Leben immer relativ einfach gemacht, und mir eine AFP-Seite vorbereitet, die alle Funktionen aufruft, welche ich testen oder debuggen wollte.
In erster Linie geht es darum, sich die dabei erzeugten Dateien zu retten um sie immer wieder aufrufen zu können.
Debugmode in der afpxisapi.ini
Als erstes müssen sie den Debugmode in der AFPXISAPI.INI einschalten.
Setzen sie also den Parameter auf 1
DebugMode=1
Das bewirkt, dass die AFPX.EXE nach jedem Aufruf wieder aus dem Speicher entladen wird und die erzeugten TMP- und INI-Dateien im Verzeichnis der AFPXISAPI.DLL liegen bleiben.
AFPX.PRG anpassen
Als nächstes müssen sie in der Methode DO den folgenden Block ent-Kommentieren.
'Achtung:' Achten Sie drauf, dass sie VFP9 "als Administrator" ausführen. Ansonsten kann VFP9 nicht auf die Registry zugreifen.
*-- Dies hier für debugging einschalten und auf die Pfade achten
*!* STRTOFILE(TRANSFORM(tnrelease),"c:\afp2files\tcrelease_"+SYS(2015)+".txt")
*!* STRTOFILE(tcform,"c:\afp2files\tcform_"+SYS(2015)+".txt")
*!* STRTOFILE(FILETOSTR(tcini),"c:\afp2files\ini1_"+SYS(2015)+".txt")
*!* TRY
*!* STRTOFILE(FILETOSTR(tcini2),"c:\afp2files\ini2_"+SYS(2015)+".txt")
*!* CATCH TO oerr
*!* STRTOFILE(oerr.message+CHR(13)+TRANSFORM(tcini2),"c:\afp2files\ini2_"+SYS(2015)+".txt")
*!* ENDTRY
Achten sie auf die Pfade. Ich verwende aus Gewohnheit c:\afp2files als Verzeichnis.
Kompilieren sie die AFPX zu einer Multithreaded EXE und rufen sie im Browser ihre AFP-Seite auf.
Es werden nun die Dateien erzeugt.
Suchen sie nach den Dateien in ihrem Ausgabeverzeichnis.
Notwendig sind
- tcform_xxxxxxxxxx.txt
- ini1_xxxxxxxxxx.txt
- ini2_xxxxxxxxxx.txt
Nun können sie mit folgenden Befehlen die AFPX direkt debuggen:
cd c:\afpx
set proc to afpx
fox=create("afpx")
?fox.do("C:\afp2files\tcform_xxxxxxxxxx.txt","C:\afp2files\ini1_xxxxxxxxxx.txt",0,"C:\afp2files\ini2_xxxxxxxxxx.txt")
Setzen sie eventuell ein set step on oder assert .f. an die gewünschten Stellen im Code und sie können jede Zeile direkt debuggen.