2012-04-16 11 views
12

Mam aplikację Windows Firemonkey, która używa TClientDatasets do ładowania plików danych XML, które próbuję dostać do pracy na OS X. Pliki danych są przechowywane w udziale plików systemu Windows, aby wielu użytkowników mogło dostęp do tych samych danych (tutaj nie chodzi mi o kwestie współbieżności).TClientDataset w OS X Firemonkey App

Nie mogę sprawić, że wersja mac załaduje pliki z serwera - wydaje się, że automatycznie przygotowuje ścieżkę lokalną do tego, co ustawię we właściwości TClientDataset.Filename.

Jeśli skopiuję pliki danych do pakietu aplikacji przed uruchomieniem aplikacji, działa to doskonale, więc pomyślałem, że spróbuję skopiować pliki w kodzie, ale nie mogę tego również użyć - może " t znaleźć pliki na serwerze.

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

Powraca FALSE pomimo faktu, że widzę go w Finderze.

Idealnie wolałbym załadować pliki z udziału niż kopiować je podczas uruchamiania i kopiować z powrotem przy wyjściu.

+3

Chyba nie ma to nic wspólnego z TClientDataSet. Problem wydaje się, że nie można zobaczyć udostępnionego pliku z poziomu aplikacji. Czy wiesz, że w nazwach plików Mac rozróżniana jest wielkość liter? –

Odpowiedz

0

Największy problem polega na tym, że system Mac OS nie automatycznie mapuje folder sieciowy do folderu lokalnego, wirtualna wersja systemu Windows robi to za Ciebie, nawet jeśli nie zamapujesz dysku, więc wszystkie pliki zostaną tymczasowo skopiowane do przestrzeni wirtualnej. dlaczego można go używać bezpośrednio z aplikacji w oknach bez mapowania folderu sieciowego.

Tak, aby rozwiązać ten problem, trzeba będzie zamontować swój udział w jakimś folderze za pomocą czegoś takiego:

mkdir/Volumes/WinShareName mocowanie WinShareName "CIFS: // server/share"

Tak potem możesz użyć pliku TFile.Exists ("/ Volumes/WinShareName/Data.xml"); Lub załaduj go bezpośrednio z clientedataset.loadfromfile.

Po prostu nie mogłem go przetestować, ponieważ nie mam już komputera Mac, ale to jest główny pomysł.

AKTUALIZACJA ---- Można zobaczyć więcej przykładów, jak zamontować sterownik sieciowy here

0

miałem podobny problem i pracował go tworząc jeden serwer TCP po stronie Windows i jednego klienta na tcp strona klienta .. i wysyłanie pliku xml za pośrednictwem strumieni .. działa jak urok ...