tomminno
29-08-2006, 21:10
Usando Xerces sotto windows ottengo sempre un errore nell'apertura dei file file, il codice incriminato, contenuto in win32platformutils.cpp, è il seguente:
FileHandle retVal = 0;
if (gOnNT)
{
retVal = ::CreateFileW
(
(LPCWSTR) nameToOpen
, GENERIC_READ
, FILE_SHARE_READ
, 0
, OPEN_EXISTING
, FILE_FLAG_SEQUENTIAL_SCAN
, 0
);
}
Ora il path è corretto e il file esiste, fopen e ifstream non hanno problemi a leggere dal path specificato.
Per riprova ho usato questo stesso codice, che non fa altro che chiamare un'API di windows, ma qualunque path (assoluto o relativo) gli passi mi resituisce sempre un FileHandle non valido.
A questo punto mi rimane il dubbio del funzionamento del cast a LPCWSTR: nel mio caso io utilizzo char* per il nome del file, mentre Xerces usa XMLCh* che è compatibile con wchar, quindi in realtà non ci dovrebbe essere nessun problema.
Dov'è l'inghippo?
FileHandle retVal = 0;
if (gOnNT)
{
retVal = ::CreateFileW
(
(LPCWSTR) nameToOpen
, GENERIC_READ
, FILE_SHARE_READ
, 0
, OPEN_EXISTING
, FILE_FLAG_SEQUENTIAL_SCAN
, 0
);
}
Ora il path è corretto e il file esiste, fopen e ifstream non hanno problemi a leggere dal path specificato.
Per riprova ho usato questo stesso codice, che non fa altro che chiamare un'API di windows, ma qualunque path (assoluto o relativo) gli passi mi resituisce sempre un FileHandle non valido.
A questo punto mi rimane il dubbio del funzionamento del cast a LPCWSTR: nel mio caso io utilizzo char* per il nome del file, mentre Xerces usa XMLCh* che è compatibile con wchar, quindi in realtà non ci dovrebbe essere nessun problema.
Dov'è l'inghippo?