
VFP 作为一个面向对象的数据库编程语言,看上去似乎和控制台应用程序毫无关系。何必介意世俗的看法?
关于控制台应用程序,我们可以通过搜索引擎,甚至像 ChartGPT 这样的大模型获取足够多的信息和资料,不再累述。而使用 VFP 来创建这样的应用程序,也有先贤做出过努力和探索。
我所知的第一个源头或者 Demo 在
Creating a console window for Visual FoxPro application https://github.com/vfpx/Win32API/blob/master/samples/sample_474.md
上述链接是截至目前仍可以访问的地址。甚至,对于会使用鼠标的人来说,能因此获得更多的资料。我曾经对其中“the main unsolved issue is finding a practicality in console windows(主要未解决的问题是找到控制台窗口的实用性)”的说法表示认同。
我再次被这个主题吸引的时候,已经是N年后的2023年。来自
MagicMenu https://github.com/VFPLegacy/MagicMenu
这是一个让我很兴奋的工具。使用它,可以在 VFP 中创建控制台应用程序、Windows 服务和 WEB 应用。在我试着使用它来创建控制台应用程序时,对这种类型的应用才算是有了真正的认识。
MagicMenu 是简单的,简单到你只需要点击一下菜单项就可以创建一个特定类型的应用。
使用 MagicMenu 创建的控制台应用程序“预置”了一个“主程序”:
Do FoxConsole
* 在控制台中写入
_vfp.cli.Print("打印文本并保持在同一行中")
_vfp.cli.Println()
_vfp.cli.Println("另一个带有换行符的文本...")
* 从控制台读取
lcName = _vfp.cli.Input("您的姓名?:")
If !empty(lcName)
_vfp.cli.Println("Hi " + lcName + "!")
Else
_vfp.cli.Println("我不是在问候你,因为你没有名字。")
Endif
_vfp.cli.Println("感谢您使用这个库。按回车键(Enter)退出...")
_vfp.cli.readkey()
_vfp.cli.exit(0)
这个 Demo 给人两个直觉,一个是它完成了和键盘的交互,并可以从交互的结果获取键入的内容;一个是它是使用一个类实例来完成的。
简单到一种可笑的程度!
事实呢?
(未完待续)