【问题标题】:Can I extract a file from a foxpro general field?我可以从 foxpro 通用字段中提取文件吗?
【发布时间】:2009-01-22 02:21:24
【问题描述】:

我正在将 VFP 9 应用程序移植到 SQL Server。 VFP 应用程序有一些表,其中包含“常规”字段。查询字段时我得到一个字节数组,当我将它保存到磁盘时,我可以查看它是一个word文档,或者一个Paint BMP等。

通过阅读,我发现通用字段是一种专有格式,并且包含文档预览的缩略图(我敢肯定)。

有人可以指出一些代码,这些代码首先会提取文件类型,然后是我可以保存为原始文件的实际文件数据。 (把预览图拿出来也不错。)

显然,在过去,有人在 foxpro 中编写了一个名为 GENTOFIL.PRG 的程序,这听起来像是将一般字段转换为文件。但是,谷歌在试图找到它时并没有多大帮助!

【问题讨论】:

    标签: foxpro visual-foxpro


    【解决方案1】:

    如果您知道 General 字段的内容是 Word 文档,我有一些 Visual FoxPro 代码,由应该提取它的人推荐。

    * 首先以编程方式创建一个表单 loForm = CREATEOBJECT("表格") * 使用常规字段打开您的 VFP 表。根据需要更改名称 在 0 ALIAS WordData 中使用 CustomerDocs.DBF loForm.AddObject("oleWordDoc", "oleBoundControl") loForm.oleWordDoc.AutoSize = .T. * 将通用字段绑定到 oleboundcontrol loForm.oleWordDoc.ControlSource = "WordData.gen1" lnCounter = 1 扫描 * 文件名全部相同,计数器在末尾 * 您可能在表格的另一列中有文件名。 lcFileName = "docfromgeneralfield" + TRANSFORM(lnCounter) lcFileName = FORCEEXT(lcFileName, "doc") * 将数据从通用字段保存到 .doc 文件 loForm.oleWordDoc.SaveAs("lcFileName") lnCounter = lnCounter + 1 ENDSCAN 发布 loForm 使用 (SELECT("WordData")) 返回

    如果您在从表格中提取图像时需要帮助,可以查看我过去使用过的 Microsoft 知识库文章。

    http://support.microsoft.com/kb/894819

    里克·舒默 Visual FoxPro MVP

    【讨论】:

      【解决方案2】:

      VFP 中的“General”字段类型有点奇怪...

      来自 VFP 帮助文档:

      General 字段包含一个十字节的 参考实际内容 字段:一个电子表格,一个单词 处理器文件或图片, 由另一个应用程序创建。这 实际数据类型和数量, 但是,取决于自动化 创建对象的服务器和 无论您是链接还是嵌入 OLE 目的。

      如果你链接一个 OLE 对象,你的表 仅包含对 数据和应用程序 创造了它。如果您嵌入 OLE 对象,该表包含 数据以及对 创建它的应用程序。尺寸 一般字段的限制仅受 可用磁盘空间量。

      这里要注意的关键是 VFP 的“常规”字段类型处理 Microsoft OLE 对象,它们可以是链接嵌入式。此外,VFP 直接操作 OLE 对象的能力似乎很小,因为在对包含的 OLE 对象调用操作时,关联的应用程序实际上是在运行以打开/编辑 OLE 绑定的“常规”字段的内容。

      如您所说,如果您能够手动提取文件,那么这可能是提取文件的最佳方式,因为即使是 VFP 也提供了与通用类型字段中包含的数据交互的最少方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-26
        • 2010-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多