NOSHOW
命令的TEXT
子句禁止输出到Fox主窗口,但输出仍显示在SET ALTERNATE
的日志文件集中。文本输出可以以某种方式保留在文本文件之外吗?例如:
set alternate to foo.log
set alternate on
* ...
local s
text to s noshow
this won't show up on the screen but it'll go into the file anyway
endtext
* ...
set alternate off
set alternate to
发布SET CONSOLE OFF
无效。
背景:我想捕获输出到Fox屏幕的文本,但产生输出的代码包含一些TEXT NOSHOW ... ENDTEXT
块,用于初始化工作对象中的多维查找数组。该文本也会在文件中结束并使其基本无用,噪声信号比率约为1000比1.我不想通过围绕TEXT
块来破坏无辜的工作者代码随着SET ALTE
摆弄,因此这个问题。
答案 0 :(得分:0)
您可以使用Set Textmerge而不是text ... endtext。即:
Local s
Set Textmerge To Memvar s Noshow
\\this won't show up on the screen nor will go into the file
Set Textmerge To
Set Textmerge Off
答案 1 :(得分:0)
目标是双重的。主要目标是将输出捕获到文件中以便于阅读 - 输出是一些剩余的原型/研究代码的结果,可用于进一步的原型设计/研究。例如:
nVorhanden = bitor( ;
iif(empty(nvl(m.oPos.c_LK, 0)), 0, 1), ;
iif(empty(nvl(m.oPos.c_EDVNr, 0)), 0, 2) )
nFehlt = bitand(m.nPflicht, bitnot(m.nVorhanden))
if m.nFehlt <> 0
anzeige_Dateiname_und_LnwId_falls_noetig_(m.oLnw, @m.lDateinameAngezeigt)
? " Pos[" + transform(m.i) + "]: #" + transform(m.oPos.n_PlanPos), "'"
?? m.oPos.c_Text
?? "' ("
?? transform(m.oPos.c_LK)
?? "|"
?? transform(m.oPos.c_EDVNr)
?? "|Faktorsumme", transform(m.oPos.Faktorsumme())
?? "):"
if bittest(m.nFehlt, 0)
?? " LK-Nr. fehlt"
endif
if bittest(m.nFehlt, 1)
?? " EDV-Nr. fehlt"
endif
endif
使用不同的输出方法来破解类似的东西的kLOC会比它的价值更多的工作。另一方面,带有TEXT命令的散布输出信噪比为1到1000,使捕获的输出无效。
第二个目标是不到munge - 并且可能会破坏 - 内部使用TEXT NOSHO ... ENDT
的无辜库代码。因此,用户代码必须让位。为了将中断/噪声降到最低,建立一个简单的SET-ALTE-OFF类,可以在战略位置使用以包装TEXTy库调用,如下所示:
* ...
with createobject([SET_ALTE_OFF_and_restore_later])
roIntp = CPaulaExcelinterpreter(m.oXLSX.c_Alias) && <- does TEXT ...
endwith
pruefe_Lnw(m.roIntp.o_Lnw) && <- does useful output
* ...
实际上它是所有输出有趣信息的周围代码,只有少数几个TEXTy库调用。
在所考虑的所有替代方案中,这为源代码增加了最少量的噪声,并且面对异常飞行时是安全的,不需要明确的FINALLY
帧,因此即使在Foxen之前工作也是如此VFP8。
自然,课程简单明了:
define class SET_ALTE_OFF_and_restore_later as relation
c_ALTE = .null.
function Init
this.c_ALTE = set("ALTERNATE")
set alternate off
procedure Destroy
if this.c_ALTE == "ON"
set alternate on
endif
enddefine
尽量减少工作量。
TEXT NOSHOW ... ENDTEXT
与SET ALTERNATE
捕获的行为仍然很奇怪,但是......