12

我有一个 Windows Firemonkey 应用程序,它使用 TClientDatasets 加载我试图在 OS X 上工作的 XML 数据文件。数据文件存储在 Windows 文件共享中,因此多个用户可以访问相同的数据(我不是这里关注并发问题)。

我似乎无法让 mac 版本从服务器加载文件 - 它似乎自动将本地路径添加到我在 TClientDataset.Filename 属性中设置的任何内容。

如果我在启动应用程序之前将数据文件复制到应用程序包中,它会完美运行,所以我想我会尝试在代码中复制文件,但我也无法让它工作 - 它找不到文件在服务器上。

TFile.Exists('smb://<servername>/<path>/Data.xml');

尽管我可以在 Finder 中看到它,但返回 FALSE。

理想情况下,我更愿意从共享中加载文件,而不是在启动时复制它们并在退出时复制回来。

4

2 回答 2

1

我遇到了类似的问题,并通过在 Windows 端创建一个 tcp 服务器和在客户端创建一个 tcp 客户端来解决它..并通过流发送 xml 文件..就像一个魅力......

于 2016-07-01T17:31:43.033 回答
0

最大的问题是 Mac OS 不会自动将您的网络文件夹映射到本地文件夹,即使您没有映射驱动器,Windows Virtualy 也会为您执行此操作,因此所有文件都临时复制到虚拟空间,这就是您可以使用的原因它直接来自您在 Windows 上的应用程序,无需映射网络文件夹。

因此,要解决该问题,您需要使用以下方式将共享挂载到某个文件夹:

mkdir /Volumes/WinShareName 挂载 WinShareName "cifs://server/share"

所以在那之后你可以使用 TFile.Exists('/Volumes/WinShareName/Data.xml'); 或者直接从clienteddataset.loadfromfile 加载。

我只是无法测试它,因为我现在没有 Mac 机器,但这就是主要思想。

已更新----您可以在此处查看有关如何安装网络驱动程序的更多示例

于 2012-05-16T13:36:06.107 回答