2012-04-16 12 views
12

Ho un'app di Windows Firemonkey che utilizza TClientDatasets per caricare i file di dati XML che sto cercando di far funzionare su OS X. I file di dati sono archiviati su una condivisione di file di Windows in modo che più utenti possano accedere agli stessi dati (non sono preoccupato per i problemi di concorrenza qui).TClientDataset in OS X Firemonkey App

Non riesco a ottenere la versione mac caricare i file dal server - sembra che preppendano automaticamente il percorso locale a qualsiasi cosa ho impostato nella proprietà TClientDataset.Filename.

Se copio i file di dati nel pacchetto dell'app prima di avviare l'app, funziona perfettamente, quindi ho pensato di provare a copiare i file nel codice, ma non riesco a farlo funzionare - può ' t trovare i file sul server.

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

Restituisce FALSE nonostante possa essere visualizzato in Finder.

Idealmente, preferirei caricare i file dalla condivisione piuttosto che copiarli all'avvio e copiarli all'uscita.

+3

Immagino che non abbia nulla a che fare con TClientDataSet. Il problema sembra che non puoi vedere il file condiviso dall'interno dell'applicazione. Sei consapevole del fatto che sui nomi di file Mac sono sensibili al maiuscolo/minuscolo? –

risposta

0

Il problema più grande è che Mac OS non esegue automaticamente il mapping della cartella di rete in una cartella locale, Windows Virtualy fa questo per voi anche se non mappate l'unità in modo che tutti i file vengano copiati in uno spazio virtuale e questo è perché puoi usarlo direttamente dalla tua applicazione su Windows senza mappare la cartella di rete.

Quindi, per risolvere il problema è necessario montare la vostra parte per qualche cartella utilizzando qualcosa di simile a questo:

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

Così successivamente è possibile utilizzare TFile.Exists ('/ Volumes/WinShareName/Data.xml'); Oppure caricarlo direttamente da clientedataset.loadfromfile.

Non riesco a testarlo perché ora sono senza macchina mac ma questa è l'idea principale.

AGGIORNATO ---- Si può vedere più esempi su come montare un driver di rete here

0

Ho avuto un problema simile e ha lavorato fuori con la creazione di un server tcp sul lato Windows e un client TCP su il lato client .. e l'invio del file xml attraverso i flussi .. funziona come un fascino ...