【问题标题】:Opening a file in a memory stream with the correct program使用正确的程序打开内存流中的文件
【发布时间】:2013-10-30 18:01:04
【问题描述】:

我的应用程序将文件保存到数据库字段。它将采用 .pdf、.doc、.xls 和 .html 的文件类型(例如)将它们保存到表中,以便稍后提取值并将其作为文件打开。

目前,我正在将一个文件(在本例中键入 pdf)保存到我创建的 SQL 表中的 Varbinary 字段中。然后我使用以下代码将该文件读回内存流:

TBlobField(FieldByName('FileData')).SaveToStream(FileData);

我可以将它作为 pdf 格式保存到桌面上。但是,我想使用适当的应用程序(在此示例中为 adobe acrobat)直接从内存流中打开它。我可以先把它写到文件中,然后用 shellexecute 打开它,但我宁愿直接打开它。我将如何实现这一目标?任何帮助将不胜感激,我已经查看了所有内容,只能找到使用 shellexecute 打开文件路径的示例。 ShellExecuteEx 声称 lpFile 可以设置为一个对象,但我没有任何运气让它工作。

【问题讨论】:

    标签: delphi pdf


    【解决方案1】:

    你不能那样做。内存是进程私有的。当 Acrobat 进程执行时,它无法读取您的内存。您必须保存到一个文件并要求 Acrobat 打开该文件,或者在您的进程中托管一个 PDF 查看器组件。

    【讨论】:

    • 谢谢,非常感谢。
    猜你喜欢
    • 2012-02-03
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多