我们总是梦想着对象化(三)

2021-08-16 11:38:53 浏览数 (3)

现在,你会发现,你需要在主程序中使用的 Set 命令是如此之少,而 Config.fpw 文件将会成为你的每一个项目的标准的配置文件。

现在,你可以创建你的应用程序对象类了,并且,你需要在其中创建一个自定义的方法:SetEnv。它的内容就是你千挑万选后剩余的全局性的 Set 命令。当然,随着时间的推移,为了更好的配合你的应用程序,你会加入其他的全局性的“设置”。

那些作用域为当前数据工作期的 Set 命令不需要了吗?不是!

如果,你是一个入门级的,或者,对环境设置一知半解的看客,那么,我建议你把认为需要的针对当前数据工作期的 Set 命令也写入到 SetEnv,因为,你可能无法区分什么是默认数据工作期,什么是私有数据工作期。而VFP 在设计时,并不会提醒你,它默认使用系统默认的数据工作期,而作用域为当前数据工作期的 Set 命令,正是你所需要的。

第二个必须考虑的问题:路径问题。

有很多很多的人,会认为这个问题绝对的不值一提。因为,如果这个都不知道,那么,基本是不可能发布一个完整的应用程序了。

然而,你真的洞察其中的奥秘了吗?

我们这里不讨论你是如何写具体的语句的。我想说的是,绝大多数人都是使用 SetDefault 和 Set Path 命令“硬”编码。每创建一个应用项目,都需要更改这些设置代码。

事实上,大多数的 Set Default 和 Set Paht 所指定的路径,是用于开发时刻的。我只所以敢做这个判断,不是我实验过,而是,基于基本的逻辑:你认为在一个EXE文件里,还存在路径的概念吗?

这里插一些闲话:我真的真的无法想象一个写应用程序的人,会提一些别人无法回答的问题。就例如昨天遇到一个:“二维码显示是彩色的,我怎么才能打印彩色的二维码?”你是否觉得全世界就只有一种方法可以生成二维码,而你正在使用它?此种逻辑不通的问题比比皆是,全世界都在使用黄海清汉化的VFP9吗?全世界都在使用 WIN10 吗?全世界使用的 VFP9 就只有你所使用的 2412 版吗?等等等等……我称回答此类问题的人为猜谜者……

所以,我们应该为自己的问题主动加一些限制性前提,下面仅仅是一个 DEMO,希望你可以永远的模仿它:我的操作系统是 WIN XP,我所使用的VFP版本是安装了王苏发布的汉化包的 VFP9SP2 7423 版,我在使用XXXX 时遇到一个 XXXXX 问题,我使用了 XXXXX 方法尝试解决它,但是并不成功,和这个问题相关的开发环境设置是这样的YYYYYY,这里是一些相关的……,请问,我所遇到的问题,有没有人遇到过,是如何解决的。如果你的每一个问题都是如此叙述的,那么,我恭喜你,你对编程,真的是入门了。

言归正传,那么,我们应该如何来处理路径问题呢?在应用程序对象类里,创建一个标准的通用的自定义方法:SetPath 。然后,把你自己写的,或者从网络上不知道谁写的你认为没有问题的代码,粘贴进去。是否粘贴进去的唯一标准就是:你以后永远都不会再去更改它。无论你的项目在磁盘上的哪个位置,无论你是否使用不同的物理路径。你以后永远都不会再去更改它

“如果我不确定,怎么办?”,我只能这样回答你:写入你认为最好的代码,然后,在出现问题时,修正它,一直到你以后永远都不会再去更改它

这里,是我所使用的代码,我已经很久没去更改它了:

代码语言:javascript复制
LparameterstcPath
IfVartype(m.tcPath)<> [C]
 m.tcPath = [.]
Else
 m.tcPath = m.tcPath   []
Endif
PrivateAll Like l*
Privatei
Local lnCount      AsNumber,         ;
      lcPath      As Character,;
      loException  As Exception
DimensionlaDir[1]
m.lnCount= Adir(laDir, m.tcPath   [*.*], [D], 0)
If m.lnCount = 2        && ¿ÕĿ¼
 Return
Endif
For m.i = 3 To m.lnCount
 If [D] $ m.laDir[m.i, 5]
 m.lcPath = m.tcPath   m.laDir[m.i, 1]
 Try
              Set Path To (m.lcPath) Additive
              This.SetPath(m.lcPath)
 Catch To m.loException
 Messagebox(m.loException.Message, 16, This.AppName)
Exit
         Endtry
     Endif
Endfor

最后,我需要提醒你的另一件事,就是:SET PATH命令中,表示路径的字符的总的数量,VFP限制了一个最大值:4095 个字符。无论你如何使用这个命令。(这个限制的出处:VFP9帮助文件)

PS.如果你对相对路径一知半解,我觉得你应该去学习一下最基本的 DOS 命令:CD。这,不是一个玩笑。

你的反馈是我写作的动力,欢迎评论,未完待续。

1 人点赞