Подтвердить что ты не робот

TClientDataset в приложении OS X Firemonkey

У меня есть приложение Windows Firemonkey, которое использует TClientDatasets для загрузки файлов данных XML, которые я пытаюсь выполнить для OS X. Файлы данных хранятся в общем доступе к файлам Windows, поэтому несколько пользователей могут получить доступ к тем же данным (I 'm не касается проблем concurrency здесь).

Я не могу заставить загрузку Mac загружать файлы с сервера. Кажется, она автоматически добавляет локальный путь к тому, что я установил в свойстве TClientDataset.Filename.

Если я скопирую файлы данных в пакет приложения перед запуском приложения, он отлично работает, поэтому я решил, что попытаюсь скопировать файлы в код, но я не могу заставить это работать - он не может найти файлы на сервере.

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

Возвращает FALSE, несмотря на то, что я вижу его в Finder.

В идеале я бы предпочел загружать файлы из общего ресурса, а не копировать их при запуске и копировать обратно при выходе.

4b9b3361

Ответ 1

Самая большая проблема заключается в том, что Mac OS не автоматически отображает вашу сетевую папку в локальную папку, windows virtualy делает это для вас, даже если вы не сопоставляете свой диск, чтобы все файлы были временно скопированы в виртуальное пространство, и поэтому вы можете использовать его прямо из своего приложения в Windows без карты сетевой папки.

Итак, чтобы решить эту проблему, вам нужно будет подключить свой ресурс к некоторой папке, используя что-то вроде этого:

mkdir/Тома/WinShareName mount WinShareName "cifs://server/share"

Итак, после этого вы можете использовать TFile.Exists('/Volumes/WinShareName/Data.xml'); Или загрузите его непосредственно из файла clientedataset.loadfrom.

Я просто не мог проверить его, потому что теперь у меня нет машины mac, но это основная идея.

ОБНОВЛЕНО ---- Вы можете увидеть больше примеров того, как смонтировать сетевой драйвер здесь

Ответ 2

У меня была аналогичная проблема, и я разработал ее, создав один сервер tcp на стороне Windows и один клиент tcp на стороне клиента.. и отправку XML файла через потоки.. работает как прелесть...