Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Время создания файла

335
24 августа 2005 года
enola
379 / / 25.01.2005
Добрый день!
Вот получаю структуру:
 
Код:
HINTERNET hConnect = NULL;
HINTERNET hDir = NULL;
TWin32FindDat File;
SYSTEMTIME stTime;
.....
hDir = FtpFindFirstFile(hConnect, "test.exe", &File, 0, 0);
FileTimeToSystemTime(&File.ftCreationTime, &stTime);


и чего-то не получается определить время создания файла, что-то не так делаю?
причем File.cFileName показывает test.exe. А время показывает: год, месяц, ... 1601, 1, 1, 1, 5, 0, 0, 0
310
24 августа 2005 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by enola
не получается определить время создания файла, что-то не так делаю?
причем File.cFileName показывает test.exe. А время показывает: год, месяц, ... 1601, 1, 1, 1, 5, 0, 0, 0


Вот что написано в MSDN:

Цитата:
[COLOR=firebrick]Because the FTP protocol provides no standard means of enumerating, some of the common information about files, such as file creation date and time, is not always available or correct. When this happens, FtpFindFirstFile and InternetFindNextFile fill in unavailable information with a best guess based on available information. For example, creation and last access dates will often be the same as the file's modification date[/COLOR]

335
24 августа 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by fellow
Вот что написано в MSDN:


как мне узнать время модификации? может скинешь примерчик или где почитать?

310
24 августа 2005 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by enola
как мне узнать время модификации? может скинешь примерчик или где почитать?


Время модификации - член ftLastWriteTime в структуре WIN32_FIND_DATA.
Кстати, нет гарантии, что это поле будет корректным при поиске на ftp, по той же причине, что и описано выше - из-за ограничений протокола FTP.

На мой взгляд, полезнейшее чтиво - MSDN. Сходи на базар, где дисками торгуют, наверняка найдётся :)

335
24 августа 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by fellow
Время модификации - член ftLastWriteTime в структуре WIN32_FIND_DATA.
Кстати, нет гарантии, что это поле будет корректным при поиске на ftp, по той же причине, что и описано выше - из-за ограничений протокола FTP.

На мой взгляд, полезнейшее чтиво - MSDN. Сходи на базар, где дисками торгуют, наверняка найдётся :)



т.е. мне по ftp никак не узнать время создания/модификации файла?

310
24 августа 2005 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by enola
т.е. мне по ftp никак не узнать время создания/модификации файла?


Как-то узнать можно, мне кажется. Ведь ftp-клиенты показывают список файлов с временами. Только вот как? Экспериментируй, и сообщай о результатах. Что-нибудь да придумаем :)

Добавление:
Описание протокола FTP лежит здесь: http://www.ysn.ru/docs/cie/RFC/959/index.htm

Ещё одно добавление: :)
Как насчёт команды FTP-протокола LIST? Мне кажется, что в ответ на ней сервер возвращает имя файла, атрибуты, размер и дату последнего изменения этого файла на FTP-сервере. По крайней мере, тест на "настоящем" ftp-клиенте именно так и показывает.

335
25 августа 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by fellow

Ещё одно добавление: :)
Как насчёт команды FTP-протокола LIST? Мне кажется, что в ответ на ней сервер возвращает имя файла, атрибуты, размер и дату последнего изменения этого файла на FTP-сервере. По крайней мере, тест на "настоящем" ftp-клиенте именно так и показывает.



компонент NMFTP как раз list'ом вытаскивает эту дату.

335
25 августа 2005 года
enola
379 / / 25.01.2005
Забью я на эту дату создания и вообще на дату, столько времени потерять на такую фигню! :x
Если кто-нибудь найдет решение дайте знать...
всем спасибо.
310
25 августа 2005 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by enola
Забью я на эту дату создания и вообще на дату, столько времени потерять на такую фигню! :x
Если кто-нибудь найдет решение дайте знать...
всем спасибо.


Зря отказываешься, ведь решение почти найдено.
Если не хочешь продолжать ковырять дату, то подумай о включении номера версии в имя файла.

335
25 августа 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by fellow
Зря отказываешься, ведь решение почти найдено.
Если не хочешь продолжать ковырять дату, то подумай о включении номера версии в имя файла.



включение номера версии в название файла, как-то не эстетично, а насчет отказываюсь, так в WinInet list то нет! а в компоненте NMFTP я знаю, как это сделать.

362
25 августа 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by enola
Забью я на эту дату создания и вообще на дату, столько времени потерять на такую фигню!
Если кто-нибудь найдет решение дайте знать...
всем спасибо.



Я делаю по-простому - в папку обновлений кладу INI-файл в котором просто написано какие файлы качать. Клиент (обновляемая программа) открывает этот файл смотрит список и качает по списку. Кроме отсутствия возни с версиями и датами это позволяет подсунуть обратно старый в файл, если в новый я случайно встрою слишком много новых багов :) Простенькая GUI-программа позволяет по быстрому мышкой накидать файлы в этот список.

335
25 августа 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by _kolyan
Я делаю по-простому - в папку обновлений кладу INI-файл в котором просто написано какие файлы качать. Клиент (обновляемая программа) открывает этот файл смотрит список и качает по списку. Кроме отсутствия возни с версиями и датами это позволяет подсунуть обратно старый в файл, если в новый я случайно встрою слишком много новых багов :) Простенькая GUI-программа позволяет по быстрому мышкой накидать файлы в этот список.



это понятно, я тоже до этого додумался :D.

вопрос не по теме: Как клиент (обновляемая программа) обновление производит, т.е. как сама себя заменяет, как это реализовано?

310
25 августа 2005 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by enola
это понятно, я тоже до этого додумался :D.

вопрос не по теме: Как клиент (обновляемая программа) обновление производит, т.е. как сама себя заменяет, как это реализовано?


Например, копирует новый екзешник куда-нибудь, запускает его, сама завершается. Новый процесс копирует свой файл поверх старого, запускает его и завершается. Новый (обновлённый) процесс уже ничего не делает.
Реализовать это можно путём передачи вновь запускаемому процессу какого-нибудь ключика командной строки. Например ключик /update:имя_файла - копировать свой файл поверх имя_файла, запустить его и выйти.

Добавление:

Цитата:
Originally posted by enola
включение номера версии в название файла, как-то не эстетично, а насчет отказываюсь, так в WinInet list то нет! а в компоненте NMFTP я знаю, как это сделать.


Линуксоиды не представляют своей жизни без включения номеров версий в имена пакетов :) :) :)

362
25 августа 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by fellow
Например, копирует новый екзешник куда-нибудь, запускает его, сама завершается. Новый процесс копирует свой файл поверх старого, запускает его и завершается. Новый (обновлённый) процесс уже ничего не делает.
Реализовать это можно путём передачи вновь запускаемому процессу какого-нибудь ключика командной строки. Например ключик /update:имя_файла - копировать свой файл поверх имя_файла, запустить его и выйти.



Почти так - прорамма проверяет обновления, если есть, то запускает другую мелкую программу и завершается, мелкая копирует обновления и снова запускает основную программу. Причем мелкая работает универсально - ей передаются параметры: что скопировать и что потом запустить:

updater.exe "\\UPDATE_SERVER\updates\my_program\update.ini" "MainProgram.exe"

335
25 августа 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by fellow

Добавление:

Линуксоиды не представляют своей жизни без включения номеров версий в имена пакетов :) :) :)



ну я под винды пишу , так что "линуксоиды" для меня не показатель :) задачу решил маркерными файлами.

а с обновлением у меня ситуация такая: обновлять мое приложение будет инсталятор, ну чтоб и в уст/удал. программ и в реестре записи, вообщем вот так хочу.

362
25 августа 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by enola
обновлять мое приложение будет инсталятор, ну чтоб и в уст/удал. программ и в реестре записи, вообщем вот так хочу.



Инсталятор хорошо, но его ручками самому запускать надо

335
25 августа 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by _kolyan
Инсталятор хорошо, но его ручками самому запускать надо



почему его самому запускать надо? приложение мое его запустит и пущай работает.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог