首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >TQ框架解析(二):统一的开发/运行环境

TQ框架解析(二):统一的开发/运行环境

作者头像
firstxinjie
发布2024-12-06 14:04:17
发布2024-12-06 14:04:17
1380
举报
文章被收录于专栏:X#(XSharp)X#(XSharp)

在台湾的VFP爱用者社区,曾经有一个坛友提出这样一个问题,大意如下:修改项目中一个表单后,需要重新编译项目为 EXE 运行,才能确定修改是否正确,VFP有没有“即時編譯的開發環境”?

大多数人第一次面对这个自造的名词基本都是一脸懵逼,用大陆的通常表达方式就是:我能不能在开发环境下使用某种方法运行一个项目,效果就如同我将他编译为 EXE 单独运行的效果一样?

估计绝大多数人都觉得这是个蠢的不能再蠢的问题,运行主程序不就完事了?

真的就完事了?

日期格式的不同和字符串比较的问题基本是在这种思想下经常遇到的问题。例如,在开发环境下,日期的格式为 年.月.日,而到了运行环境却偏偏是 月-日-年;对于字符串,在开发环境里 a=b 是没有问题的,而到了运行环境却偏偏认为两个字符串不同......诸如此类的问题导致“运行主程序”这样的方式仅仅是看上去很美。除了在吹牛逼大会上多奉献一句废话外别无他用。

TQ开发框架在使用者毫无察觉的情况下基本解决这个问题。

它是如何做到的呢?还是利用了钩子,项目钩子(个人看法:这是一个合格的 VFP 程序员无法绕过的技术点之一)。但是请记住,钩子并不仅仅只会干已经提及的事。如果留言足够多,可以就它专门写一篇公众号文章。

在面对这样的问题时,我们需要首先明确,所谓的一致是指什么?

首先,是默认路径和搜索路径的一致;其次,是各种 SET 命令的一致。

对于路径问题,估计很多人都是沿用所谓的硬编码,这里所说的硬编码是不包含盘符的路径的表达方式。这个问题,近几天在 Foxite 论坛(www.foxite.com)由一个印度人提起,已经盖了十二层楼了......,从个人偏好来说,来自泰国的一个老外的答案更接近我的框架中使用的方法,如果有兴趣不妨一观:

BEST WAY FOR SET PATH https://www.foxite.com/archives/best-way-for-set-path-0000500220.htm

在我的框架中,使用几乎相同的两部分代码分别在项目钩子和应用程序对象中,使用递归的方式设置默认路径和搜索路径。

应用程序对象是我在 VFP 领域自造的一个名词,你可以简单的理解为它是所谓主程序的一个有机组成部分。虽然看上去,我做了重复的工作,但是,他能一劳永逸的解决路径问题,还包括各种 SET 命令的问题......当然,也包括不是今天这个主题的其他问题。因为,每个应用项目和主程序,都需要一个钩子的“变体”或者子类的实例,并且,他们共用同一个应用程序对象。

至于各种 SET 命令的设置......这个真的需要需要基本功,虽然有些看客可能不止一次的从我这里听到我下面所说的内容。

首先要清晰的理解工作期的概念。而它有一个孪生兄弟工作区。

假设,有一个生活小区,如果你可以随意的溜达到小区的任何一个房间,那么,这个小区就相当于 VFP 里所说的“默认工作期”;而事实上,只拥有一把房门钥匙的人,仅仅可以自由的在自己家里溜达每个房间,这套住宅,就相当于 VFP 所说的“私有工作期”。而无论工作期是不是私有的,每个房间就相当于所在“工作期”里的一个“工作区”。

框架的使用者无需理会自己能不能理解上面的比喻,但这是框架一些实际功能所基于的理论概念基础。由此才有使用者在懵懵懂懂中使用框架正常进行开发的可能。

SET 命令和这些概念有什么关系呢?

在 VFP 帮助中,许多 SET 命令都有“XXX的作用域是当前数据工作期”和“XXX的作用域是全局”的描述。凡是第一次知道有这个说法的,统统都“不会”看帮助,不接受反驳。还有一个问题,那就算对于“全局”来说,在哪里写命令呢?主程序啊......然而,一种很低调的装逼者在某个不起眼的位置低低地的声音说,某些命令还可以写至 config.fpw 。我恰恰是那个低调的装逼者。至于 config.fpw 文件到底怎么用,你仅仅需要运行一下 VFP 所提供的应用程序向导,然后打开该文件,对照着帮助,其余,就是一目了然......

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 xinjie的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档