注册 登录
编程论坛 VFP论坛

表单自定义属性内容为很长的语句,比如SQL代码,时,获取字段属性是为乱码

easyppt 发布于 2023-06-03 16:32, 738 次点击
只有本站会员才能查看附件,请 登录


请看图,这是一个表单,通过打开 use 表单.scx  然后 browse 发现这个属性的内容不能正常读取? 有办法解决吗?

我的理解:
1、VFP的自定义属性可以填写长字符串(带回车换行符都可以),典型的如CA类的 selectcmd,可以写很长的SQL语句。
2、截图里属性【_创建表sql】内容 实际是:
select y3,y2,bumen.b1,bumen.b5,zzjg.j1,yonghu.nid
from yonghu
left join zzjg on zzjg.nid=yonghu.y1
left join yhbm on yhbm.yonghu_nid=yonghu.nid AND yhbm.yb3=1
left join sysfzsx sx2 on sx2.nid=yhbm.yb1
left join bumen on bumen.nid=yhbm.bumen_nid
where y22='*' and y25=''
order by bumen.bh,sx2.sj3

正常表单中查看正常,但打开表单【use 表单.scx】查看源码时,这种长字符就有乱码情况,截图中 297估计是长度标识,不知道VFP是怎么读取的? 有谁研究过吗,如何正确读取这个属性的 值呢?

场景:我是想把 form转PRG 但碰到这个属性,取值出了问题。

附件表单:aa,我创建了一个自定义属性test,内容为SQL代码,问题一样,方便大家测试。
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-6-3 16:40编辑过]

6 回复
#2
shizi02023-06-03 17:42
去掉换行试试
#3
laowan0012023-06-03 18:14
字段内容保存的时候要转码strconv(SQL代码,13),取出的时候再转回来(14)
#4
csyx2023-06-03 18:58
去研究下随带的源码,你要的是这段
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-6-3 19:05编辑过]

#5
easyppt2023-06-03 20:57
谢谢版主,确实我也发现,这个chr(1) 长度固定 517 +6个空格,后面的数字就是属性值的长度。

browser类,找到了!!

[此贴子已经被作者于2023-6-3 21:15编辑过]

#6
csyx2023-06-03 21:17
以下是引用easyppt在2023-6-3 20:57:14的发言:
确实我也发现,这个chr(1) 长度固定 517 +6个空格,后面的数字就是属性值的长度。

你说的随带的源码,是VFP自身的吗,在哪里可以看到啊


1. 从解析代码可以看到,chr(1) 是固定 517,长度部分为固定8个字符!6个空格的理解不对,如果长度不为3位数,就不会是5个空格,总之是 padl(长度值,8)
2. 帮助文件里搜索 xsource 就能找到源码在哪,zip 包中的 browser 就是 class browser 的源码。另外,难道你不知道 vfp 自带 scx/vcx > prg 的功能吗?所有这些工具都有源码,全部在 xsource.zip 中,先弄懂 vfp 自带的东西,再考虑要不要造轮子
#7
easyppt2023-06-03 23:57
单纯的调用过程getproperty(稍微改造) 发现不能取出正确的值,需要调整里面的函数为双字节的才可以, 但奇怪的是 类浏览器里生成的结果又是正确的。
不管怎么说,原理已经知道了,自己改造一下。

源代码还是很有参考价值的,谢谢版主!



[此贴子已经被作者于2023-6-3 23:59编辑过]

1