* structura_frx.prg - listeaza structura unui raport VFP (.frx): benzile si obiectele lor, * exact cum le asociaza motorul de raportare (prin FFC\_FRXCursor.vcx). * Utilizare headless: precompileaza intai, apoi * vfp9.exe -A "<...>\structura_frx.FXP" ".frx" [".txt"] * Fara al doilea parametru scrie langa raport, in "_structura.txt". Se termina cu QUIT. LPARAMETERS tcReport, tcOut SET SAFETY OFF SET TALK OFF PRIVATE pcReport, pcOut LOCAL lnF, i, lcLine LOCAL ARRAY laF[1, 1] pcReport = IIF(VARTYPE(tcReport) = "C", tcReport, "") IF EMPTY(pcReport) OR NOT FILE(pcReport) STRTOFILE("structura_frx: raport inexistent: " + pcReport + CHR(13)+CHR(10), FORCEEXT(pcReport, "structura.txt")) QUIT ENDIF pcOut = IIF(EMPTY(tcOut), FORCEEXT(pcReport, "structura.txt"), tcOut) ON ERROR DO errhand WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() STRTOFILE("Raport: " + pcReport + CHR(13)+CHR(10), pcOut) SET CLASSLIB TO (HOME() + "FFC\_FRXCursor.vcx") ADDITIVE USE (pcReport) IN 0 ALIAS FRX SELECT FRX loFRX = CREATEOBJECT("FRXCursor") loFRX.CreateObjectCursor() IF USED("BANDS") SELECT BANDS lnF = AFIELDS(laF, "BANDS") STRTOFILE("=== BENZI ===" + CHR(13)+CHR(10), pcOut, 1) SCAN lcLine = "" FOR i = 1 TO lnF IF INLIST(laF[i,1], "BANDLABEL", "START", "STOP", "HEIGHT") lcLine = lcLine + laF[i,1] + "=" + TRANSFORM(EVALUATE(laF[i,1])) + " " ENDIF NEXT STRTOFILE(lcLine + CHR(13)+CHR(10), pcOut, 1) ENDSCAN ENDIF IF USED("OBJECTS") SELECT OBJECTS lnF = AFIELDS(laF, "OBJECTS") STRTOFILE("=== OBIECTE (VPOS -> banda) ===" + CHR(13)+CHR(10), pcOut, 1) SCAN lcLine = "" FOR i = 1 TO lnF IF INLIST(laF[i,1], "OBJTYPE", "OBJCODE", "VPOS", "HPOS", "HEIGHT", "WIDTH", "BANDLABEL", "START_BAND_ID", "EXPR") lcLine = lcLine + laF[i,1] + "=" + TRANSFORM(EVALUATE(laF[i,1])) + " " ENDIF NEXT STRTOFILE(lcLine + CHR(13)+CHR(10), pcOut, 1) ENDSCAN ENDIF USE IN FRX STRTOFILE("gata" + CHR(13)+CHR(10), pcOut, 1) QUIT PROCEDURE errhand LPARAMETERS tnErr, tcMsg, tcProg, tnLine STRTOFILE("ERROR " + TRANSFORM(tnErr) + " " + tcMsg + " @ " + tcProg + ":" + TRANSFORM(tnLine) + CHR(13)+CHR(10), pcOut, 1) ENDPROC