标题:乱世中的类,是用 vcx 与 prg ?
只看楼主
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
结帖率:85.71%
已结贴  问题点数:20 回复次数:35 
乱世中的类,是用 vcx 与 prg ?
首先声明一点,我无意评价是用 vcx 好还是用 prg 好,我只是描述它们之间的差别,不考虑如何抉择。

vcx 由来以及,自我开始使用 vfp3 时它就存在了,当时用得不多因为 vfp3 没有容器。大范围使用 vcx 则是 vfp6,vfp6 有了容器并且有了更多的类。prg 则应该更加久远,直至 vfp9 有很多不可视类仍然需要用 prg 来完成,这里也不考虑不可视类这种无它的方式。

我以前曾经见过一些前辈,用大量大量的 prg 来定义类,甚至先用 vcx 设计类然后再转成 prg。我一直不明白为什么费尽心机维护两个版本,偶尔小更新图方便直接改 prg 忘了改 vcx,大更新又去调整 vcx 再转成 prg。我也曾经咨询过也跟同行讨论们这个问题,但从来没有人说得出一个令我信服的理由,这些理由比起维护两个版本来说以及 vcx 带来的便利来说根本不值一提,如果 prg 真的这么好,又何必设计时用 vcx 再特意转成 prg 呢。

后来我明白了,那是 Win2000 问世以后,vfp6 还是 vfp5 的程序在 Win2000 上频繁出现 C5 闪退,有大神分析了一通 vfp 原理,总结说是 Unicode 问题,解决方法12345其中有一个就是把 vcx 转成 prg。我信吗?我只是严格自律所有变量一律 Local 声明,我出现 C5 的情况通常都是在使用第三方的情况下出现(含 Win32api),这种情况下只能是认真看第三方说明了根本没有任何办法解决。

现在己经是 3202 年了,vfp6 也早就退出历史舞台了,可这种把 vcx 转成 prg 习惯却被很多人保留了下来,甚至把“为什么”视为绝密的存在。

prg 连个语法检查都没有,用它来写一个稍微复杂一点的类都痛苦得要死。vcx 可以多窗口可以打开多个方法,Ctrl+E 保存后下次打开 IDE 仍然停留在你上次编辑时的状态。prg 唯一的优点就是写个小型的示例 ,在各种论坛上直接发代码不用上传文件。

举个小例子,下图就是 vcx 与 prg 的差别,vcx 有属性、方法说明 prg 没有,prg 是由 vcx 直接生成的一字未动,我甚至尝试在 prg 中加 helpString "方法说明" 都毫无作用,但方法提示对我这位也己被岁月摧残成“前辈”的老人来说却是相当管用的。

就说到这吧,似乎没说什么,或者 vfp 并不完美,vcx 也不完美,prg 也不完美。



[此贴子已经被作者于2023-3-26 10:12编辑过]

搜索更多相关主题的帖子: prg 出现 方法 转成 vfp6 
2023-03-26 10:10
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:3 
好!
2023-03-26 10:16
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:3 
向楼主学习

坚守VFP最后的阵地
2023-03-26 11:16
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:3 
vcx方便【用】,prg方便【查】。
实际编写软件代码时,我习惯用“类管理器”打开vcx,来作编辑修改;而程序初稿完工后,进入debug阶段,我习惯导出prg,传到平板内,没事就拿在手上,一遍又一遍地通读,以便找出问题所在。
两者互不矛盾。
嗯……还有一点:
申请软件著作权时,若不放心源码过多地对外暴露,哪怕对方是正规管理机关也不太放心,不妨将一堆无关紧要的scx导出为prg,打印到A4纸上凑数。事关,软著对于源代码有打印页数的要求:前、后各连续30页,共60页。将表单转换为prg,又长又臭,五六个表单估计就能满足全部要求——反正版权中心那帮家伙,他们也看不懂VFP代码。
嘿嘿。

2023-03-26 11:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:3 
如果只从个人爱好就没必要区分高低,自己喜欢就好。
vcx好、prg也好,最终结果好才是好。
vcx、scx... 也许是可视化编程的需要,其实VFP也不算得是真正意义的可视化编程。
prg过程模块式,可读性是第一特性。

2023-03-26 12:00
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:3 
我做过对比,VCX,PRG运行的效果不同;
https://bbs.bccn.net/thread-510188-1-1.html
就是想自动根据字符长度改变控件大小,取所有最长的长度
为此,还特意问 吹版主

[此贴子已经被作者于2023-3-26 12:09编辑过]

2023-03-26 12:06
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:0 
以下是引用cssnet在2023-3-26 11:34:56的发言:

vcx方便【用】,prg方便【查】。
实际编写软件代码时,我习惯用“类管理器”打开vcx,来作编辑修改;而程序初稿完工后,进入debug阶段,我习惯导出prg,传到平板内,没事就拿在手上,一遍又一遍地通读,以便找出问题所在。
两者互不矛盾。
嗯……还有一点:
申请软件著作权时,若不放心源码过多地对外暴露,哪怕对方是正规管理机关也不太放心,不妨将一堆无关紧要的scx导出为prg,打印到A4纸上凑数。事关,软著对于源代码有打印页数的要求:前、后各连续30页,共60页。将表单转换为prg,又长又臭,五六个表单估计就能满足全部要求——反正版权中心那帮家伙,他们也看不懂VFP代码。
嘿嘿。


vfp 可以将整个项目导出成 prg/txt。
2023-03-26 12:18
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
以下是引用倦猫1973在2023-3-26 12:18:37的发言:
vfp 可以将整个项目导出成 prg/txt。


对了,我一直没找到全自动地、无错误地将带有ActiveX控件的表单/类库,转换为可正确的、可直接运行的prg的好方法。
举个例子:
假设表单中添加了Treeview、RichTextBox之类ActiveX控件,那么,从类管理器ViewSource转出来的prg,因为缺少了必要的ActiveX控件OLE设计时信息,其实是无法直接运行,必须手动修补添加的。
不知倦猫有无良策?
2023-03-26 12:36
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:0 
没有,反正导出来就是看着玩的,又不运行。
2023-03-26 12:40
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用mywisdom88在2023-3-26 12:06:38的发言:

我做过对比,VCX,PRG运行的效果不同;
https://bbs.bccn.net/thread-510188-1-1.html
就是想自动根据字符长度改变控件大小,取所有最长的长度
为此,还特意问 吹版主

不好意思,还真没留意到。
问题应该是 add object 与 addobject() 的动机不同。
在VFP帮助里经常会看到“设计时”和“运行时”说法。
add object  是设计时,静态的,代码载入时对象就已经成型。有点像拖个控件到表单里一样,在表单看到什么样就什么样。
addobject() 是运行时,动态的,代码载入时对象不存在的,等到代码运行时,程序在运行过程中用指令逐步创建成型。

Cnt类的init在执行addobject()时触发,Cnt的width此时已经定局,到执行下面语句时,Label的AutoSize变动不会改变Cnt的width。
.Cnt2.label1.caption = "哈哈哈哈哈哈哈哈"

或者可以在addobject()时传入label1的caption。
或者:
.Cnt2.label1.caption = "哈哈哈哈哈哈哈哈"
INKEY(0.001)
.Cnt2.init


2023-03-26 13:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511683-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062671 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved