回 帖 发 新 帖 刷新版面

主题:为什么有效长度会相差那么多?

为什么有效长度会相差那么多?到底txt可以有多长?
use b1
txt=''
for tt=1 to 4
tc=ltri(str(tt))
for jj=1 to 252
jc=ltri(str(jj))
txt=txt+subs(jdb&tc,&jc,1)+'='+subs(jdb&tc,&jc,1)
if &txt &&最后显示的有效长度是5204
? jj
? "长度",len(txt)
*? txt
*wait
endi
txt=txt+'.or.'
endf
endf
retu
***************************************************************************************************


use b1
txt=''
for tt=1 to 4
tc=ltri(str(tt))
for jj=1 to 252
jc=ltri(str(jj))
txt=txt+subs(jdb&tc,&jc,1)+'='+subs(jdb&tc,&jc,1)
if &txt &&最后显示的有效长度是5947
? jj
? "长度",len(txt)
*? txt
*wait
endi
txt=txt+'.and.'
endf
endf
retu
***************************************************************************************************

use b1
txt=''
for tt=1 to 4
tc=ltri(str(tt))
for jj=1 to 252
jc=ltri(str(jj))
txt=txt+'subs(jdb&tc,&jc,1)'+'='+'subs(jdb&tc,&jc,1)'
if &txt  &&最后显示的有效长度是8179 
? jj
? "长度",len(txt)
*? txt
*wait
endi
txt=txt+'.or.'
endf
endf
retu
***************************************************************************************************

use b1
txt=''
for tt=1 to 4
tc=ltri(str(tt))
for jj=1 to 252
jc=ltri(str(jj))
txt=txt+subs(jdb&tc,&jc,1)+'='+subs(jdb&tc,&jc,1)+'.and.subs(jdb&tc,&jc,2)=subs(jdb&tc,&jc,2)'
if &txt &&最后显示的有效长度是8150
? jj
? "长度",len(txt)
*? txt
*wait
endi
txt=txt+'.or.'
endf
endf
retu


为什么有效长度会相差那么多?到底txt可以有多长?

回复列表 (共8个回复)

沙发

txt=txt+subs(jdb&tc,&jc,1)+'='+subs(jdb&tc,&jc,1)+'.and.subs(jdb&tc,&jc,2)=subs(jdb&tc,&jc,2)' 有问题

板凳


有什么问题

3 楼

从第一例和第二例看,都用了相同的
txt=txt+subs(jdb&tc,&jc,1)+'='+subs(jdb&tc,&jc,1)
不同之处在于
txt=txt+'.or.'和 txt=txt+'.and.'
所以长度不同

第三例
txt=txt+'subs(jdb&tc,&jc,1)'+'='+'subs(jdb&tc,&jc,1)'
根本就没有读取jdb&tc的值,而只是增加字符串'subs(jdb&tc,&jc,1)=subs(jdb&tc,&jc,1)'
第四例
txt=txt+subs(jdb&tc,&jc,1)+'='+subs(jdb&tc,&jc,1)+'.and.subs(jdb&tc,&jc,2)=subs(jdb&tc,&jc,2)'
既读取jdb&tc的值,又增加字符串'subs(jdb&tc,&jc,1)=subs(jdb&tc,&jc,1)'

所以最终的长度各不相同。

4 楼

4个程序执行后都出现“行太长”的错误提示,那(if &txt )一行命令到底可以有多长呢?

5 楼

在VFP6中最大长度 2048 个字节
在VFP9中最大长度 8192 个字节

6 楼

我的是6.0,可这四个都超过2048了呀,怎么回事?

7 楼

在6.0中,命令行的最大长度是2048字节,你要宏替换的TXT字符串都超过2048字节,所以不能执行而报错。

8 楼

if &txt &&最后显示的有效长度是5204
那为什么超过5204后才报错?

我来回复

您尚未登录,请登录后再回复。点此登录或注册