Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
3 / 3 / 0
Регистрация: 22.06.2017
Сообщений: 72

Дата и время изменения файла

07.11.2025, 15:30. Показов 2608. Ответов 31

Студворк — интернет-сервис помощи студентам
Мне нужно в ячейку StringGrid поместить дату и время изменения файла
Делаю это так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
function ReadDate(FN:String):String
var
W: WideString; // полное имя файла
Dat:TDateTime;
FHandle: Integer;
begin
 W:=FN;
 FHandle := FileOpen(w, 0);
 Dat:= FileDateToDateTime(FileGetDate(FHandle));
 Result:= FormatDateTime('yyyy.mm.dd.hh.nn.ss', Dat);
end;
Однако, полученное время отличается от видимого в свойствах файла (в проводнике)
Например:
получено 2008.08.26.19.42.02
в свойствах 26.08.2008 20:42
То есть, ровно на час (если файл был изменен за час до нового года, то на год)
Что интересно, если дату изменения вернуть назад функцией FileSetDate,
то дата в свойствах файла становится на час моложе (прибавляется час)
Сам вопрос:
Можно ли не особенно исхитряясь получить дату съемки полностью соответствующую таковой в свойствах файла.
Если нельзя, то как выяснить (программно) региональные настройки Windows и как их использовать для коррекции полученной даты (нужно их как-то преобразовать, а затем сложить или вычесть...)

С уважением, Николай
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2025, 15:30
Ответы с готовыми решениями:

Узнать полный URL. Дата изменения файла по URL
Доброго времени суток, уважаемые форумчане. Долгих лет и славных лет вам, уважаемый UI... Работаю...

Дата и дата+10 дней в запросе
Доброе время суток! Пишу прогу, работающую с базой DB2. Стоит следующая задача: необходимо...

Дата/время файла в архиве zip
Как средствами Delphi получить дату/время файла в архиве zip?

31
3 / 3 / 0
Регистрация: 22.06.2017
Сообщений: 72
12.11.2025, 18:56  [ТС]
Студворк — интернет-сервис помощи студентам
Спасибо, учту

Добавлено через 1 час 23 минуты
Как говорится не трогай г он и вопросов задавать не будет

По поводу перехвата ошибок (сказал: "учту", вот и учитываю)

Вполне вероятная ошибка загрузки файла в Image
написал такой код:
Delphi
1
2
3
4
5
6
7
Sw:= StringGrid1.Cells[1,Row];  
    try
       Image1.Picture.LoadFromFile(Sw); 
     except
      on E: Exception do
      ShowMessage('Произошла ошибка: ' + E.ClassName + ': ' + E.Message);
    end;
переименовал текстовый файл в .jpg и попытался загрузить его - ошибка не перехватывается
Она возникает - приходит сообщение "JPEG error #61"

Можно добавить: Назвался груздем - полезай в кузов, но я этого не писал, а Вы не читали

С уважением, Николай
0
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
12.11.2025, 20:48
Цитата Сообщение от NNK_RTR Посмотреть сообщение
написал такой код:
Delphi
1
2
3
4
5
6
7
Sw:= StringGrid1.Cells[1,Row];  
    try
       Image1.Picture.LoadFromFile(Sw); 
     except
      on E: Exception do
      ShowMessage('Произошла ошибка: ' + E.ClassName + ': ' + E.Message);
    end;
переименовал текстовый файл в .jpg и попытался загрузить его - ошибка не перехватывается
Она возникает - приходит сообщение "JPEG error #61"
Что-то вы делаете не так.
Миниатюры
Дата и время изменения файла   Дата и время изменения файла  
0
3 / 3 / 0
Регистрация: 22.06.2017
Сообщений: 72
12.11.2025, 21:19  [ТС]
Если файл не существует, то ошибка перехватывается, но если он поврежден, то увы и ах...
0
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
12.11.2025, 21:39
NNK_RTR, opendialog-ом передаю существующий файл. Ищите проблему у себя.
0
3 / 3 / 0
Регистрация: 22.06.2017
Сообщений: 72
13.11.2025, 10:07  [ТС]
Ошибки в коде Вы не видите (иначе бы сообщили).
Действия:
1 - пользователь выбирает (ставит "галочку" или не ставит) - исследовать ли вложенные папки
2 - Щелкает по кнопочке "Выбрать папку с фото"
(таблица в цикле заполняется. В первый столбец (счет с нуля) записывается полный путь и имя файла)
3 - пользователь включает "Предварительный просмотр" (ставит "галочку")
(в качестве средства просмотра используется Image1)
4 - Пользователь щелкает по любой строке
(срабатывает код выше)
приведу его еще раз, чтобы Вы не возвращались
Delphi
1
2
3
4
5
6
7
Sw:= StringGrid1.Cells[1,Row];  
    try
       Image1.Picture.LoadFromFile(Sw); 
     except
      on E: Exception do
      ShowMessage('Произошла ошибка: ' + E.ClassName + ': ' + E.Message);
    end;
В строковую переменную Sw записывается содержимое ячейки [1,Row] (где Row номер выбранной строки), затем в Image1 загружается файл (имя и полный путь к которому содержится в переменной Sw)

Я не вижу разницы, передаем мы путь opendialog-ом или выше описанным способом.

Долго искал, но нашел поврежденный файл .JPG. передаю его Вам. Посмотрите, будет ли у Вас перехватываться ошибка. У меня нет. Отладчик (дебаггер) сообщает об ошибке (если запускать из среды делфи), но ожидаемого перехвата не происходит - просто приходит сообщение "JPEG error #61"

С уважением Николай
Вложения
Тип файла: rar 2010.01.20.08.24.53.rar (6.38 Мб, 8 просмотров)
0
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
13.11.2025, 14:08
Цитата Сообщение от NNK_RTR Посмотреть сообщение
Долго искал, но нашел поврежденный файл .JPG. передаю его Вам. Посмотрите, будет ли у Вас перехватываться ошибка. У меня нет. Отладчик (дебаггер) сообщает об ошибке (если запускать из среды делфи), но ожидаемого перехвата не происходит - просто приходит сообщение "JPEG error #61"
Странное дело. Я получил оба варианта поведения (есть перехват ошибки и нету перехвата с "JPEG error #61"). Но не разобрался почему так и как этим управлять. Сегодня нет времени разбираться.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
13.11.2025, 17:15
Цитата Сообщение от NNK_RTR Посмотреть сообщение
полученное время отличается от видимого в свойствах файла (в проводнике)
В проводнике Вы видите время в часовом поясе своей системы.
В Дельфи у даты есть часовой пояс?
0
3 / 3 / 0
Регистрация: 22.06.2017
Сообщений: 72
13.11.2025, 18:01  [ТС]
Сама Делфи часов, конечно, не наблюдает, но, по нашей просьбе может выяснить.
Как я понял, дата и время существует в двух форматах: - местное время (LocalTime) и UTC-время (UTCTime).

Местное время можно получить с помощью функции GetLocalTime
а UTC-время с помощью функции GetSystemTime
0
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
14.11.2025, 12:29
NNK_RTR, разобрался. Всё оказалось просто и одновременно для меня неожиданно. Кто хочет сам поразбираться приложил два проекта. Открываете в среде, запускаете, нажимаете на кнопку и выбираете файл 2010.01.20.08.24.53.jpg, который приложен выше в архиве. Один проект показывает ошибку "JPEG error #61" и не попадает в блок except, а другой показывает ошибку неизвестное расширение файла и попадает в блок except.
Под спойлером причина и как так получилось.
Кликните здесь для просмотра всего текста

Разница в uses. Проект, который попадает в блок except не имеет подключенного Vcl.Imaging.jpeg. Этот проект в принципе не может открыть jpeg-файл.
Второй проект имеет подключенный Vcl.Imaging.jpeg, он открывает нормальные jpeg-файлы, но сбоит на испорченном.
Почему-то ошибка происходит где-то в недрах Image1 и не перехватывается.
Откуда взялся Vcl.Imaging.jpeg в uses? Он добавляется автоматически при попытке загрузить jpeg-файл в Image на этапе дизайна.

Что с этим делать узнавайте у программистов. Заведите отдельную тему.
Вложения
Тип файла: zip 0.zip (72.7 Кб, 4 просмотров)
Тип файла: zip 1.zip (72.7 Кб, 4 просмотров)
1
Модератор
 Аватар для D1973
9954 / 6489 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
14.11.2025, 13:03
Самое смешное то, что этот "сбойный" JPEG спокойно открывается любой программой просмотра изображений...
0
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
14.11.2025, 13:15
Цитата Сообщение от D1973 Посмотреть сообщение
Самое смешное то, что этот "сбойный" JPEG спокойно открывается любой программой просмотра изображений...
и даже конвертируется, пересохраняется и в пересохранённом файле видна картинка полностью.
0
3 / 3 / 0
Регистрация: 22.06.2017
Сообщений: 72
14.11.2025, 14:35  [ТС]
В процессе тестирования программы мне попался другой поврежденный файл. На вид дефект такой же, как и переданный Вам в качестве "кролика". Но ошибка была перехвачена. Я удивился и возмутился! Как так!
Загрузил "кролика" - опять ошибка перехватывается...
Я уже думал, как сформулировать вопрос на форуме, чтобы не вызвать негативной реакции, типа, чего ты ерунду городишь, то у тебя перехват есть, то нет...
Прочитав разъяснение от Rayvenor, все стало понятно: я добавил еще один Image (в качестве заставки) и загрузил в него картинку на этапе разработки (дизайна).
Сейчас просмотрел блок uses и действительно, в него добавилось Vcl.Imaging.jpeg

Слава Rayvenor, слава!!!

С уважением, Николай
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2025, 14:35

Построение графика с txt файла (дата, время, параметр)
Здравствуйте. Очень нужна Ваша помощь. Имеется файл txt в нем информация в 3-х столбцах через...

Дата изменения папки
Здравствуйте! Скажите, пожалуйста, а как можно узнать дату изменения папки?(файлов в ней нет...

Дата-Время на DELPHI
Помогите очень прошу разобраться с кодом. Есть ли в этом коде какая нибудь ошибка begin d:=now;...

Бегущая строка! Дата\время
в общем проблема такая: в бегущую строку не удается отображать дату\время причем так что бы время...

Дата и время
Подскажите пожалуйста, как в одну переменную задать время из одного DateTimePicker1.Time, а дату из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru