-1

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

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

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

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

4

1 回答 1

1

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

于 2013-10-30T18:03:54.323 回答