Newsgroup: it.comp.lang.visual-basic
Titolo: bug!!!!

scusate, sto davvero impazzendo...
credo che ci sia qualcosa che non va nella funzione FileTimeToSystemTime
tutti i parametri restituiti da lpSystemTime sono assolutamente corretti,
solo uno non va e cioč l'ora... se il file č stato salvato l'ultim avolta
alle 13.20, esce 11.20, 20.40 --> 18.40... insomma ne toglie sempre 2...
ma capita anche a voi?
fate qualche prova, se vi capita...
Mario

 solo uno non va e cioè l'ora... se il file è stato salvato l'ultim avolta


 alle 13.20, esce 11.20, 20.40 --> 18.40... insomma ne toglie sempre 2...
Estratto da un messaggio che ho postato tempo fa:
-------------------------------------------------------------------
[...] Le funzioni principali per la lettura/modifica del file-time
sono GetFileTime e SetFileTime, alle quali va passato l'handle
del file da leggere o modificare e le 3 strutture di tipo FILETIME
per i dati relativi a creazione, accesso e modifica del file in questione.
Occorre tenere presente che, in lettura, il dato FILETIME
č relativo al GMT, ossia non tiene presente l'offset del
local time. Per adattare il file-time all'offset locale si usa la
funzione FileTimeToLocalFileTime. In scrittura la correzione
viene in genere fatta tramite la funzione SystemTimeToFileTime.
Ti faccio un esempio di lettura del file-time
(Le definizioni delle strutture, delle funzioni e delle costanti
le trovi tutte nell'Api Text Viewer)
Dim OFS As OFSTRUCT
Dim FT_CREATE As FILETIME
Dim FT_ACCESS As FILETIME
Dim FT_WRITE As FILETIME
Dim FT_BUFF As FILETIME
Dim hFile As Long
Dim lngRet As Long
   'Si ottiene l'handle del file da leggere
   hFile = OpenFile([NomeFile], OFS, OF_READ)
   If hFile = -1 Then
     'NOP - In caso di errore la funzione ritorna -1
   Else
      'In sequenza: creazione, ultimo accesso, ultima scrittura
      lngRet = GetFileTime(hFile, FT_CREATE, FT_ACCESS, FT_WRITE)
      If lngRet = 0 Then
         'NOP - In caso di errore la funzione ritorna 0
      Else
         'Occorre convertire il file-time nel local-time
         FT_BUFF = FT_CREATE
         lngRet = FileTimeToLocalFileTime(FT_BUFF, FT_CREATE)
         FT_BUFF = FT_ACCESS
         lngRet = FileTimeToLocalFileTime(FT_BUFF, FT_ACCESS)
         FT_BUFF = FT_WRITE
         lngRet = FileTimeToLocalFileTime(FT_BUFF, FT_WRITE)
      End If
   End If
   'Clean up
   lngRet = CloseHandle(hFile)
In genere, per leggere il dato contenuto nella struttura FILETIME
la si traduce in una struttura SYSTEMTIME tramite la funzione
FileTimeToSystemTime.
Esempio di scrittura del file-time
Dim OFS As OFSTRUCT
Dim SYS_TIME As SYSTEMTIME
Dim FT_CREATE As FILETIME
Dim FT_ACCESS As FILETIME
Dim FT_WRITE As FILETIME
Dim hFile As Long
Dim lngRet As Long
   'Si ottiene l'handle del file da aprire impostando anche la
   'l'inibizione dell'accesso ad altri processi
   hFile = OpenFile([NomeFile], OFS, _
        OF_READWRITE Or _
        OF_SHARE_DENY_READ Or _
        OF_SHARE_DENY_WRITE)
   If hFile = -1 Then
    ' NOP
   Else
      'In genere si inizializza una struttura SYSTEMTIME con i dati
      'da scrivere e poi la si traduce in una struttura FILETIME
      lngRet = SystemTimeToFileTime(SYS_TIME, FT_CREATE)
      lngRet = SystemTimeToFileTime(SYS_TIME, FT_ACCESS)
      lngRet = SystemTimeToFileTime(SYS_TIME, FT_WRITE)
      'Imposta le modifiche. E' possibile indicare 0& in uno
      'dei parametri per non modificare il dato corrispondente
      lngRet = SetFileTime(hFile, FT_CREATE, FT_ACCESS, FT_WRITE)
      If lngRet = 0 Then
      'La funzione ritorna 0 se ha esito negativo
         NumeroDiErrore = GetLastError()
      End If
   End If
   'Clean up
   lngRet = CloseHandle(hFile)
-------------------------------------------------------------------

perfetto tutto chiaro.
io avevo usato findfirstfile, che restituiva il tutto in una struttura
win32_find_data e poi convertivo in systemtime... mi mancava il passaggio
intermedio del localtime...
però dovrebbe fare tutto lui... ::))))
Mario