61 lines
2.2 KiB
Plaintext
61 lines
2.2 KiB
Plaintext
* 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" "<raport>.frx" ["<iesire>.txt"]
|
|
* Fara al doilea parametru scrie langa raport, in "<raport>_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
|