Macos OS X Firemonkey应用程序中的TClientDataset

Macos OS X Firemonkey应用程序中的TClientDataset,macos,delphi,network-programming,delphi-xe2,firemonkey,Macos,Delphi,Network Programming,Delphi Xe2,Firemonkey,我有一个Windows Firemonkey应用程序,它使用TClientDatasets加载我试图在OS X上使用的XML数据文件。数据文件存储在Windows文件共享上,因此多个用户可以访问相同的数据(这里我不关心并发问题) 我似乎无法获得mac版本,无法从服务器加载文件-它似乎会自动将本地路径预挂到我在TClientDataset.Filename属性中设置的任何路径 如果我在启动应用程序之前将数据文件复制到应用程序包中,它会工作得很好,所以我想我会尝试在代码中复制文件,但我也无法让它工作

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

我似乎无法获得mac版本,无法从服务器加载文件-它似乎会自动将本地路径预挂到我在TClientDataset.Filename属性中设置的任何路径

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

TFile.Exists('smb://<servername>/<path>/Data.xml');
t文件存在('smb:////Data.xml');
返回FALSE,尽管我可以在Finder中看到它


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

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

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

mkdir/Volumes/WinShareName 装载WinShareName“cifs://server/share"

因此,在此之后可以使用TFile.Exists('/Volumes/WinShareName/Data.xml'); 或者直接从clientedataset.loadfromfile加载它

我只是无法测试它,因为我现在没有mac电脑,但这是主要的想法

更新----
您可以看到更多关于如何装载网络驱动程序的示例。我遇到了一个类似的问题,通过在windows端创建一个tcp服务器,在客户端创建一个tcp客户端解决了这个问题。。并通过流发送xml文件。。工作起来就像一个符咒…

我想这与TClientDataSet无关。问题似乎是您无法从应用程序中看到共享文件。您知道Mac上的文件名区分大小写吗?