Bonjour, j'ai le problème suivant, sur un de mes programmes, et pour
lequel je n'ai trouvé aucune solution, n'ayant pas trouvé pourquoi ça
coince :
Le programme me permet d'aller chercher sur un serveur Ftp une liste de
fichiers, et de récupérer les noms (ça c'est ok), mais ausside
récupérer la dernière date de modification (là, ça se corse, et c'est
là que mon programme plante) :
Voici quelques lignes de mon code :
Public Sub ListerFichiers(ByRef RepServeur As String)
Dim pData As WIN32_FIND_DATA
Dim essai As String
Dim i As Integer = 0
Dim lRet As Integer
Dim hFind As Integer
pData.cFileName = New String(Chr(0), 260)
hFind = FtpFindFirstFile(LhConnection, RepServeur, pData, 0, 0)
If hFind = 0 Then Exit Sub
Do
pData.cFileName = New String(Chr(0), 260)
lRet = InternetFindNextFile(hFind, pData)
If lRet = 0 Then Exit Do
If not (pData.dwFileAttributes And FileAttribute.Directory) = FileAttribute.Directory Then
'stockage des noms des fichiers dans un tableau :
listeFichiersWeb(i, 0) = Left(pData.cFileName, InStr(pData.cFileName, Chr(0)) - 1)
'Là, c'est la ligne qui va permettre de convertir la date
' c'est ma fonction "FileTimeToDate" qui pose problème (voir ci-dessous la fonction)
essai = FileTimeToDate(pData.ftLastWriteTime)
'Pour le débugage, je me suis contenté d'afficher le résultat, mais mon prog bloque avant de toute façon :
MsgBox(essai)
End If
i += 1
Loop
InternetCloseHandle(hFind)
End Sub
'La fonction qui déconne :
Private Function FileTimeToDate(ByVal ft As FILETIME) As Date
Dim datelocale As FILETIME, datesys As SYSTEMTIME
' LA LIGNE QUI COINCE DANS MON PROGRAMME :
If FileTimeToLocalFileTime(ft, datelocale) = 0 Then Exit Function
If FileTimeToSystemTime(datelocale, datesys) = 0 Then Exit Function
FileTimeToDate = CDate(datesys.wDay & " " & datesys.wMonth & " " & datesys.wYear & " " & _
datesys.wHour & ":" & datesys.wMinute & ":" & datesys.wSecond)
End Function
J'ai le message d'erreur suivant :erreur Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.
Or, je ne sais pas quoi faire pour résoudre cette erreur.