FTP. Узнать дату создания и изменения файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ramauf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 03.08.2003 (Вс) 21:10
Откуда: Кумертау

FTP. Узнать дату создания и изменения файла

Сообщение Ramauf » 30.10.2006 (Пн) 23:21

Есть сервер, на нем файлы. Эти файлы иногда обновляются, причем имена файлов остаются те же. Чтобы постоянно не заходить самому на сервер надо сделать прогу, которая сама вытаскивает весь список файлов, определяет дату создания и изменения файлов. Список вытащил, но вот с датой не знаю как делать.
Воспользовался примером из API-Guide
Код: Выделить всё
................................
.............
Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type
.............................
...............

Потом объявляю переменные
Код: Выделить всё

    Dim pData As WIN32_FIND_DATA, hFind As Long, lRet As Long
Вытаскиваю первый файл
Код: Выделить всё
 
    hFind = FtpFindFirstFile(hConnection, "*.*", pData, 0, 0)
    If hFind = 0 Then Exit Sub

И тут у меня возникает проблема, пишу
Код: Выделить всё
            Button1.Caption = pData.ftCreationTime.dwLowDateTime

А он мне выдает 0
Вот тут я не догоняю, подскажите как сделать.
Спасибо заранее!

Ramauf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 03.08.2003 (Вс) 21:10
Откуда: Кумертау

Сообщение Ramauf » 30.10.2006 (Пн) 23:24

Извиняюсь, что 2 раза написал - инет заглючил.

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 30.10.2006 (Пн) 23:28

Удали вопрос в той теме, она должна исчезнуть

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 31.10.2006 (Вт) 8:02

Ramauf, преобразуй дату из формата FILETIME в что-нить более удобо читаемое, если тебе это время надо вывести в Caption или куда еще.
Весь мир матрица, а мы в нем потоки байтов!

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 31.10.2006 (Вт) 9:44

Код: Выделить всё
Dim tSysTime As SYSTEMTIME, d As Date

FileTimeToSystemTime pData.ftCreationTime, tSysTime
d = CDate(tSysTime.wDay & "." & tSysTime.wMonth & "." & tSysTime.wYear & " " & tSysTime.wHour & ":" & tSysTime.wMinute & ":" & tSysTime.wSecond)

Ramauf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 03.08.2003 (Вс) 21:10
Откуда: Кумертау

Сообщение Ramauf » 31.10.2006 (Вт) 12:13

Он выводит 01.01.1601
а если вывожу чисто время:
Код: Выделить всё
d=CDate(tSysTime.wHour & ":" & tSysTime.wMinute & ":" & tSysTime.wSecond)

Он выдает 0:00:00 причем на всех файлах.
Может для FTP надо что-то другое использовать?

Ramauf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 03.08.2003 (Вс) 21:10
Откуда: Кумертау

Сообщение Ramauf » 02.11.2006 (Чт) 16:01

Неужели никто не знает?

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 02.11.2006 (Чт) 16:07

На ошибку проверил?
Код: Выделить всё
lRet = FileTimeToSystemTime(pData.ftCreationTime, tSysTime)
If lRet > 0 Then d = CDate(tSysTime.wDay & "." & tSysTime.wMonth & "." & tSysTime.wYear & " " & tSysTime.wHour & ":" & tSysTime.wMinute & ":" & tSysTime.wSecond)


Вообще, хоть что-то находит? Можно взять размер файла?
Код: Выделить всё
lSize = (pData.nFileSizeHigh * (MAXDWORD + 1)) + pData.nFileSizeLow

Попробуй вместо *.* поставить пустую строку


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 135

    TopList