<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[加菲猫的VFP]]></title><description><![CDATA[分享各种VFP黑科技，小程序，公众号，APP，BS，CS都可以搞定]]></description><link>https://blog.csdn.net/fitche</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; fitche]]></copyright><item><title><![CDATA[VFP数据导出全攻略：Excel、PDF、CSV、HTML、JSON，一行代码搞定]]></title><link>https://blog.csdn.net/fitche/article/details/161498205</link><guid>https://blog.csdn.net/fitche/article/details/161498205</guid><author>fitche</author><pubDate>Thu, 28 May 2026 15:09:43 +0800</pubDate><description><![CDATA[需要系统安装了虚拟 PDF 打印机（Windows 10+ 自带 Microsoft Print to PDF，Windows 11 带 Microsoft Print to PDF 或 HP Smart）。只要系统有一个虚拟 PDF 打印机（如 Microsoft Print to PDF、Foxit PDF Printer 等），打印输出即为 PDF 文件。——这不是 VFP ReportListener 基类的标准方法，标准 VFP 里这个方法不存在，调用会报错"找不到属性或方法"。]]></description><category></category></item><item><title><![CDATA[VFP文件操作大全：配置、日志、序列化，一个函数都不落]]></title><link>https://blog.csdn.net/fitche/article/details/161466218</link><guid>https://blog.csdn.net/fitche/article/details/161466218</guid><author>fitche</author><pubDate>Wed, 27 May 2026 11:18:12 +0800</pubDate><description><![CDATA[很多VFP开发者写配置用DBF表，写日志又用DBF表，连临时数据也存DBF——DBF万能归万能，可总有一些场景用文件更合适。比如对接外部系统的JSON配置、生成错误日志、保存用户偏好、程序自启动注册……：配置用INI（轻量），系统参数用注册表（Windows标准），日志用文本文件（跨平台可读），结构数据用DBF（VFP主场）。：小文件（<10MB）直接用这对函数，简单可靠。今天把VFP文件操作的所有"兵器"整理出来，从文本读写到注册表操作，一套全掌握。五：日志系统：从零搭建不丢日志的文件记录器。]]></description><category></category></item><item><title><![CDATA[CursorAdapter + XMLAdapter：VFP数据交互双雄，打通内外数据任督二脉]]></title><link>https://blog.csdn.net/fitche/article/details/161436282</link><guid>https://blog.csdn.net/fitche/article/details/161436282</guid><author>fitche</author><pubDate>Tue, 26 May 2026 19:11:30 +0800</pubDate><description><![CDATA[FP开发者最头疼的事之一，就是数据在"里面"和"外面"之间来回折腾。CursorAdapter负责把外部数据源变成VFP临时表，XMLAdapter负责把VFP数据变成XML（或反过来）——两个类各司其职，组合起来却能打通任督二脉。：CursorAdapter是"住"在数据源旁边的管家，XMLAdapter是"跑"在数据路上的快递员。如果说CursorAdapter是"把外部数据拉进来"，XMLAdapter就是"把VFP数据推出去（或拉回来）"的双向转换器。要先换"主人"，得先CursorDetach。]]></description><category></category></item><item><title><![CDATA[VFP SYS函数速查：106个系统函数，掌握这12个就够用了]]></title><link>https://blog.csdn.net/fitche/article/details/161404800</link><guid>https://blog.csdn.net/fitche/article/details/161404800</guid><author>fitche</author><pubDate>Mon, 25 May 2026 09:02:43 +0800</pubDate><description><![CDATA[VFP有106个SYS函数，从SYS(0)到SYS(3101)，数字密密麻麻看得人头晕。但说实话，日常开发真正高频使用的也就十来个——剩下的要么是遗留兼容，要么是底层调试用的。：SYS(3)基于系统时钟，高并发下可能重复。：多用户环境下SYS(3)可能返回相同值，用SYS(2015)替代。分类整理，帮你快速定位需要的函数，不用再翻文档翻到眼花。：SYS(5) + SYS(2003) = 完整当前路径。：VFP中始终返回655360，用MEMORY()替代。与ERROR()、MESSAGE()组合。]]></description><category></category></item><item><title><![CDATA[VFP权限管理怎么做？用户模式vs角色组模式，一看就懂]]></title><link>https://blog.csdn.net/fitche/article/details/161350603</link><guid>https://blog.csdn.net/fitche/article/details/161350603</guid><author>fitche</author><pubDate>Sat, 23 May 2026 08:50:26 +0800</pubDate><description><![CDATA[💡 description相当于菜单设计器的提示（菜单名），但可以多个菜单名对应一个description。今天我们聊聊VFP权限管理的两种模式——用户模式和角色组模式，从设计到代码一次性讲清楚。用户可以设置所属组，但组不可以选所属组。是因为菜单表随时会增加，这样查询就会将新增菜单项也全部展现，防止找不到权限。- 可以先上用户模式，随时平滑升级到角色组模式（数据表结构兼容）：把权限分配给"组"，用户只需选择所属组，自动继承组权限。：每个用户直接配置菜单权限，一人一套。.T.=组，.F.=用户（默认.F.）]]></description><category></category></item><item><title><![CDATA[VFP加密实战：AES算法3步搞定，对接接口不再愁]]></title><link>https://blog.csdn.net/fitche/article/details/161267006</link><guid>https://blog.csdn.net/fitche/article/details/161267006</guid><author>fitche</author><pubDate>Wed, 20 May 2026 09:21:27 +0800</pubDate><description><![CDATA[对接第三方平台接口，对方丢过来一句"AES-CBC加密，PKCS7填充，密钥0123456789ABCDEF"——很多VFP开发者当场懵圈。STRCONV是加密场景的最佳搭档，参数9（转UTF-8）、13（转Base64）、14（Base64还原）、11（UTF-8还原）四个值记住就够了。这个FLL库不只是AES，还封装了MD5、SHA1、SHA256、DES、RSA等几十种算法，堪称VFP加密的"瑞士军刀"。拿这个结果去和在线工具的对比——一致，就说明加密没问题，可以正式开发了！写"ECB"就用ECB。]]></description><category></category></item><item><title><![CDATA[VFP数据访问层怎么选？DAL_CA vs MSSQLHelper终极对比]]></title><link>https://blog.csdn.net/fitche/article/details/161205461</link><guid>https://blog.csdn.net/fitche/article/details/161205461</guid><author>fitche</author><pubDate>Mon, 18 May 2026 09:51:04 +0800</pubDate><description><![CDATA[在祺佑框架中，MSSQLHelper和DAL_CA不是非此即彼的关系，而是各有擅长的工具。选对工具，开发效率翻倍。你的VFP项目用的是MSSQLHelper还是DAL_CA？💡 DAL_CA需要先有代码生成器生成的PRG文件，MSSQLHelper直接写SQL更灵活。特点：CursorFill后生成临时表，像VFP的临时表一样操作，也可以绑定到控件中操作。DAL_CA基于VFP本身的CursorAdapter派生，是重量级的DAL层类。，执行失败就笼统提示"执行失败"，而不去跟踪和处理错误，这是要不得的。]]></description><category></category></item><item><title><![CDATA[VFP 猫框对接AI摄像头抓拍车牌，访客预约自动抬杆]]></title><link>https://blog.csdn.net/fitche/article/details/160194405</link><guid>https://blog.csdn.net/fitche/article/details/160194405</guid><author>fitche</author><pubDate>Wed, 15 Apr 2026 22:11:10 +0800</pubDate><description><![CDATA[用VFP的人，有专业的，有非专业了，很多人其实是小白，问出的问题是小白，如果问题不对，我们引导他们问正确的问题。微信小程序，微信公众号开发，H5 APP开发，Extjs BS开发，VFP面向对象进阶，VFP中间层开发,VFP Layui 开发。无论是VFP，还是JS，还是C，只要能混合起来，都可以发表。做了个访客小程序，让客人手机上预约，工厂审核，客人到达后，门口摄像头抓拍车牌，系统比对有预约的，自动开道闸。"VFP极简混合开发，少写代码、快速出活，用VFP，但不局限于VFP，各种语言混合开发"]]></description><category></category></item><item><title><![CDATA[mysql5.5 升级到mysql8.x,VFP要趟的几个坑，不看也收藏一下]]></title><link>https://blog.csdn.net/fitche/article/details/159774840</link><guid>https://blog.csdn.net/fitche/article/details/159774840</guid><author>fitche</author><pubDate>Thu, 02 Apr 2026 15:57:51 +0800</pubDate><description><![CDATA[这是因为VFP使用了ODBC MYSQL8.0的驱动导致无法读取，改成使用ODBC  mysql3.51驱动，但随之而来，就是下面这个问题。认证插件，因为ODBC  MYSQL 3.51 使用的认证插件还是老款的，我们要设置MYSQL8.x使用老款认证插件。因为mysql5.5 不支持JSON格式字段，于是我做了一个决定，升级到mysql8.x，于是进入一整天的填坑之旅。如果你像加菲猫一样，图方便这样做了，后面就要悲催了。AI给你的方案大都都是错的，甚至方向都带偏了。恢复数据库，那就一个一个来。]]></description><category></category></item><item><title><![CDATA[用web Service传送文件]]></title><link>https://blog.csdn.net/fitche/article/details/159275875</link><guid>https://blog.csdn.net/fitche/article/details/159275875</guid><author>fitche</author><pubDate>Thu, 19 Mar 2026 16:55:13 +0800</pubDate><description><![CDATA[当然，我们以前介绍的 cursortoxml() 的做法依然有它的好处，并且它依然是传送数据表的主流方法，这是因为在 Internet 的应用时，我们并不提倡让大量数据在网络上传递，只是传送有用的行和列；换言之，用 Web Service 传送文件时，服务器更客户化，无论是上传、下载文件，我们的服务器都可以完成复杂的客户化的逻辑代码！所以，我们在平时应用中，如果文件体积不大，并且传送文件的需求集合在 Web Service 应用里的，就应该使用这里我们介绍的方法：用 Web Service 传送文件！]]></description><category></category></item><item><title><![CDATA[用 Visual FoxPro 与SQL Server 构建 Client/Server应用程序(远程视图)]]></title><link>https://blog.csdn.net/fitche/article/details/159237279</link><guid>https://blog.csdn.net/fitche/article/details/159237279</guid><author>fitche</author><pubDate>Wed, 18 Mar 2026 17:16:00 +0800</pubDate><description><![CDATA[设本参数为2时，执行到第4条记录时发生更新冲突，Visual FoxPro将继续发送的5、7条记录的更新描述，并使本函数返回.F.值，Visual FoxPro的记录指针最终停在最后一条被修改的记录上（这里是第7条记录）键值是不可以重复的！设想一下在一个员工表中，您把性别设定为键值，并修改某一员工的姓名，然后发送更新，这会造成什么结果（事实上Visual FoxPro会报告键值不唯一的错误，我们假设Visual FoxPro不报错）：与该被修改姓名的员工具有相同性别的员工的名字都被修改了，很可笑吧。]]></description><category></category></item><item><title><![CDATA[动态生成网页]]></title><link>https://blog.csdn.net/fitche/article/details/159146666</link><guid>https://blog.csdn.net/fitche/article/details/159146666</guid><author>fitche</author><pubDate>Mon, 16 Mar 2026 17:10:38 +0800</pubDate><description><![CDATA[我举此例，无非是希望大家对 XML的关注、加深对前文的认识，最重要的是 XML是很复杂的规范，仅以Visual FoxPro 7提供的内置函数恐怕无法涵盖，学会自己对XML的控制是大有好处的。看上去整个过程很麻烦，其实真的很简单——最简单的程序，这就是 Visual FoxPro 的特色，将很烦的工作封装起来，但它与其他开发环境不一样——Visual FoxPro 往往采用“传统”的方式封装（非OOP），其目的就是给我们最大的灵活性！从理论上讲，解读这个文件应是可以的，实际这是一件非常麻烦的事情。]]></description><category></category></item><item><title><![CDATA[Excel-VFP-SQL Server 结合应用实例]]></title><link>https://blog.csdn.net/fitche/article/details/159042072</link><guid>https://blog.csdn.net/fitche/article/details/159042072</guid><author>fitche</author><pubDate>Fri, 13 Mar 2026 16:54:42 +0800</pubDate><description><![CDATA[朋友对我说，用户的最终意见没有定下来，随时有改动的可能，所以我尽量用OOP的方式，把一些不太会改变得内容做在基类里，例如：SQL Server的连接、事务的管理、Excel 文件的打开、关闭等；对于变异性大的内容，我尽量用同一的接口封装在子类里，例如，读取Excel 数据，分解数据等。用VFP的人，有专业的，有非专业了，很多人其实是小白，问出的问题是小白，如果问题不对，我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看，这么简单的问题都不会，嘲笑别人不行，而无法提出建设性答案，是很low的。]]></description><category></category></item><item><title><![CDATA[我眼中的Visual FoxPro8]]></title><link>https://blog.csdn.net/fitche/article/details/158958582</link><guid>https://blog.csdn.net/fitche/article/details/158958582</guid><author>fitche</author><pubDate>Wed, 11 Mar 2026 17:11:27 +0800</pubDate><description><![CDATA[关于“连接”的话题谈的差不多了，不过有一个问题是需要注意的：一个“连接句柄”可以衍生多个Statement Handle，在开发中，如果有一个 Statement Handle进入了事务处理状态，这时所有相关的Statement Handle也进入了事务处理状态，这因为 SQL Server 的事务是根据真实的连接区分的——由于某一条Statement Handle 的要求，使得“连接句柄”进入了事务状态，理所当然的该条“连接句柄”衍生的所有Statement Handle也一起进入了同一个事务处理。]]></description><category></category></item><item><title><![CDATA[用Visual FoxPro编写web Service]]></title><link>https://blog.csdn.net/fitche/article/details/158916132</link><guid>https://blog.csdn.net/fitche/article/details/158916132</guid><author>fitche</author><pubDate>Tue, 10 Mar 2026 17:11:50 +0800</pubDate><description><![CDATA[这一点在其他语言中是很难实现的，它们也可以读取不同的数据源的数据，但它们无法支持异构数据在本地的SQL连接，它们只能用“循环+条件判断”的方式实现“异构数据”的连接；而几乎同样的代码，基于COM的应用，对象只创建、摧毁一次。这两次方法的调用是没有任何关系的，也就是说，Web Service是不会保存前一次调用后产生的状态，供以后调用时使用，这与传统的COM调用是有很大的区别的。用VFP的人，有专业的，有非专业了，很多人其实是小白，问出的问题是小白，如果问题不对，我们引导他们问正确的问题。]]></description><category></category></item><item><title><![CDATA[在.NET里使用Viswal FoxPro 提供的资源|]]></title><link>https://blog.csdn.net/fitche/article/details/158873880</link><guid>https://blog.csdn.net/fitche/article/details/158873880</guid><author>fitche</author><pubDate>Mon, 09 Mar 2026 17:13:05 +0800</pubDate><description><![CDATA[是.NET的原生资源。可以使用.NET SDK 里的TLBIMP工具程序把一个非托管的COM类型库转换成为.NET的元数据，这种元数据实际上就是一个可以被任何托管代码访问的容器类，把原来的非托管代码包装起来。前文我们的立足点是怎样将现有 Visual FoxPro技术在.NET平台上应用，这些好像对那些不具备Fox技术背景的开发人员没有太大的意义，不过接着要介绍的东西是100%的.NET原生资源，这就是Visual FoxPro for .NET Toolkit。]]></description><category></category></item><item><title><![CDATA[我们的第一个com组件]]></title><link>https://blog.csdn.net/fitche/article/details/158791992</link><guid>https://blog.csdn.net/fitche/article/details/158791992</guid><author>fitche</author><pubDate>Sat, 07 Mar 2026 16:43:03 +0800</pubDate><description><![CDATA[COM这个单词大家听得不少了，它到底是什么，它到底有没有实用价值。如果它对我们有用，那么在Visual FoxPro怎样编写COM组件。笔者将站在Visual FoxPro开发人员的立场上，与大家一起探讨以上问题，希望对您有所帮助。可能这是一篇国内很难看到的有关Visual FoxPro与COM的文章，所以肤浅、不当之处难以避免，我就尽力而为了！ 两年多前，我为了一个极其复杂的报表而头疼时，偶然想到了Word这一伟大的书写工具——用 Word还有什么写不出的！于是我就使用DDE控制Word，这实在是一场噩梦]]></description><category></category></item><item><title><![CDATA[第一个WEB网页]]></title><link>https://blog.csdn.net/fitche/article/details/158721819</link><guid>https://blog.csdn.net/fitche/article/details/158721819</guid><author>fitche</author><pubDate>Thu, 05 Mar 2026 17:05:49 +0800</pubDate><description><![CDATA[而 Visual FoxPro 是编译执行的语言，漫长的 Fox 历史证明了它处理数据、处理字符串时迅捷的速度，把大量处理数据库、处理字符串的运算放在 Visual FoxPro 编写的 COM 组件里，无疑能提高 ASP 的运行效率。从客户端发送请求，到服务器端的响应，再到 COM 组件的调用和运作，最后返回客户端浏览器能够解析的 HTML 代码描述（这里我们的返回信息中，还包含了XML、DHTML 、CSS，所以不是所有的浏览器都能够解析这些东东，我想 IE 5.5 以上 应该没问题的。]]></description><category></category></item><item><title><![CDATA[编写简单的导航条]]></title><link>https://blog.csdn.net/fitche/article/details/158685840</link><guid>https://blog.csdn.net/fitche/article/details/158685840</guid><author>fitche</author><pubDate>Wed, 04 Mar 2026 16:29:19 +0800</pubDate><description><![CDATA[从接触 FoxPro 开始，我们就面对着自己编写 “Navigator”（导航条），我与一些朋友都认为：数据库系统开发时，基本的数据导航、添加、删除、修改是很见程序员功力的。实际情况也是这样，无论是 Visual FoxPro 还是其他工具，如：Delphi、PB、VB，虽然都提供了各自的控件，但是实际情况总是复杂的，标准控件往往不能应付。用VFP的人，有专业的，有非专业了，很多人其实是小白，问出的问题是小白，如果问题不对，我们引导他们问正确的问题。加菲猫的VFP，用VFP不局限VFP，用VFP混合一切。]]></description><category></category></item><item><title><![CDATA[在VisualFoxPro中实现表单的输出]]></title><link>https://blog.csdn.net/fitche/article/details/158645685</link><guid>https://blog.csdn.net/fitche/article/details/158645685</guid><author>fitche</author><pubDate>Tue, 03 Mar 2026 17:08:57 +0800</pubDate><description><![CDATA[由于我们在下拉式列表框中选择了“抓图”表单，所以列表框中就列示了“抓图”中的所有可视控件：表单、Olecontrol、Command，您可以选择要抓拍的控件的名称，按下“Capture”按钮，您将得到该控件的当前模样的图片。在示例图中，整个画面是有“客户区域”+“系统区域”构成的，“系统区域”包括四个“边框区域”（上、下、左、右）、一个“标题栏区域”，如果有菜单栏还要算上菜单区域。用VFP的人，有专业的，有非专业了，很多人其实是小白，问出的问题是小白，如果问题不对，我们引导他们问正确的问题。]]></description><category></category></item></channel></rss>