![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
добрый день)
вопрос такой: есть код, в котором сканируется папка и имена найденных в ней текстовых файлов добавляются в ListBox, что нужно добавить в код чтобы выводилась вместе с именем и дата создания файла? вот код:
Это сообщение отредактировал(а) Martisha - 28.11.2008, 08:21 |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: нет Всего: 306 |
Martisha, в данном случае ты делаешь велосипед на мой взгляд. в VCL есть компонент FileListBox.
Его свойство Drive - определяет диск Directory - определяет каталог - по умолчанию корневой Mask - определяет фильтрацию (в твоем случае - *.txt) |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: 3 Всего: 18 |
дата создания хранится в SearchRec.FindData.ftCreationTime, передавай еще одним параметром в EditFile()
Это сообщение отредактировал(а) AntonN - 28.11.2008, 09:01 |
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: 1 Всего: 13 |
у структуры TSearchRec помимо значения name есть и date, можно его через datetostr() передавать в listbox, например функцие EditFile() передавать еще одну переменную
но все же, Martisha, уверенна, что именно это надо? |
|||
|
||||
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
подробнее..если можно ![]() ятак делала, но вылазят ошибки( Добавлено через 45 секунд да, это очень нужно Добавлено через 5 минут и 6 секунд на date ругается |
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: 1 Всего: 13 |
||||
|
||||
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
||||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: нет Всего: 306 |
||||
|
||||
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
||||
|
||||
Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 5 Всего: 11 |
Там нету такого поля date FindData (Windows only) contains additional information such as the file creation time, last access time, and both the long and short file names. Это сообщение отредактировал(а) Christoph - 28.11.2008, 12:14 -------------------- ![]() |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
Дату и время хранит поле Time. ![]() |
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: 1 Всего: 13 |
toTHandle: спасибо
все таки, пора по новой инсталить делфи, а то как-то неловко, в самом деле... |
|||
|
||||
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
||||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: 1 Всего: 13 |
||||
|
||||
Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 5 Всего: 11 |
FindData хранит время создания файла. Валер ты читал мой пост выше? Хотя написано что в Time хранться тоже время создания, надо проверить
Это сообщение отредактировал(а) Christoph - 28.11.2008, 13:29 -------------------- ![]() |
|||
|
||||
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
я пробовала, только в результате выводится число имесяц правильно, а дальше какой то набор цифр Добавлено через 1 минуту и 26 секунд а с FindData сложнее, не совсем понятно как с ним работать Добавлено через 2 минуты и 5 секунд и всправке про FindData ненаписано практически ничего |
|||
|
||||
Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 5 Всего: 11 |
с Time у меня выводит набор чисел...только через FindData нада, если получится выложу ....
-------------------- ![]() |
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: 1 Всего: 13 |
Martisha, надо изменить формат вывода даты и времени, делфи под рукой нет, код привести не могу, но почитать об этом можно в справке по типу timedate (или datetime, где же моя память)
|
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
Стоп. Что вам тут надо? Вывести дату файла? Так есть же функция FileDateToDateTime например:
Это сообщение отредактировал(а) THandle - 28.11.2008, 14:24 |
|||
|
||||
Martisha |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
вот такой вот код нашла, осталось только добавить в ListBox, чтоб рядом с названием файла отображалось:
Добавлено через 5 минут и 13 секунд THandle, мне нужнои дату и времясоздания папки получить и чтоб все это выводилось в ListBox, т.е. там должно выводиться название файла и имя.. Добавлено через 13 минут и 48 секунд
так только число выводит, а время как вывести? |
||||
|
|||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 18 Всего: 191 |
Martisha, нашли мой старый код
![]()
P.S. Поправил Это сообщение отредактировал(а) Rrader - 1.12.2008, 16:27 |
|||
|
||||
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
было бы неплохо, самой не получается разобраться( Добавлено через 2 минуты и 21 секунду ага)) Добавлено через 12 минут и 44 секунды вернее ее кто то ужеизменил и я уже нашла его) Rrader, помоги мне разобраться в своейпроцедуре, пока ничего не пойму |
|||
|
||||
Christoph |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 5 Всего: 11 |
Мой код медленее
![]() Чтоб показать что мой код тупит допишу еще вот что
![]()
Это сообщение отредактировал(а) Christoph - 28.11.2008, 21:54 -------------------- ![]() |
||||
|
|||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
Christoph, твой код будет не слабо тупить на папках с большим количеством файлов при обновлении ListBox'а. Тут нужен Begin(End)Update.
Где try..finally? Почему оформления такое корявое?)) |
|||
|
||||
Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 5 Всего: 11 |
Это кто тебе сказал Rrader? ![]() -------------------- ![]() |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
Christoph, ну а ты возьми попробуй свой код и код Rrader'а на папке Windows допустим. Там файлов много. Вот и посмотри на ListBox.
Насчет оформления: разве хорошо оформлено? Почитай допустим это: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=802 Насчет try..finally - должно присутствовать при всех освобождениях ресурсов в том числе и FindClose. А вообще да, я Rrader'а поддерживаю ![]() |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
![]() И оформление - это уже дело каждого. Строгих стандартов в оформлении нет. По мне так код сволне читаем. Это сообщение отредактировал(а) Poseidon - 28.11.2008, 16:59 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Поручишся? Поддерживаю THandle. Добавлено через 44 секунды ...за исключением случая, когда работаешь в команде или пишешь для других, как сейчас... -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Martisha |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
Christoph, очень странно, при использовании вашего кода выходит совсем не та дата..
Rrader, пробовала использовать ваш старый код, но почему то в ListBox ничего не добавляется.. что означает эта строка? вернее куда добавляется строка S?
и эта еще:
Это сообщение отредактировал(а) Martisha - 1.12.2008, 09:04 |
||||
|
|||||
Martisha |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
почему то когда делаю так:
после выполнения
идет сразу в конецпроцедуры.. а если я комментю это выражение, то выводит в ListBox название папки а не файла и дату странную..год вообще нет тот(( почему так? |
||||
|
|||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: 1 Всего: 13 |
попробуй не комментить, а поставить тело цикла, после repeat первой строчкой
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Martisha |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
так ошибки вылазят
а так, выдает дату..только она почему то одинаковая для всех записей и совсем даже не та( Добавлено через 3 минуты и 29 секунд мне вообще даже не дата важнее а время создания файла, как нибудь возможно время вытащить? часы, минуты там...это важно, как не знаю( дату то я сама могу, а вот часы и минуты не знаю как.. ![]() |
||||
|
|||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: 1 Всего: 13 |
в справке по типу TDateTime опмано как получать дату, а как время
|
|||
|
||||
Rrader |
|
||||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 18 Всего: 191 |
Проверьте и сравните эту дату с той, что в свойствах файла в проводнике. Должно совпадать.
Это сообщение отредактировал(а) Rrader - 1.12.2008, 14:17 |
||||
|
|||||
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
Rrader, так выводится текущее время, а не время создания папки
![]() дату я так вывела, причем она выводится отдельно в другом ListBox-е, что удобнее для меня в дальнейшей работе..вот со временем только не понятно.. ![]() вот вывод даты создания папки:
может что нибудь в моем коде добавить возможно для вывода времени? |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
DateToStr заменить на TimeToStr -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
||||
|
||||
CodeMonkey |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Почему летнее время не интуитивно.
Добавлено @ 15:20
Неа, в первом варианте (как и Christoph) забыл из UTC перевести в местное время. Добавлено @ 15:24 1. Всё же используйте правильно try/finally:
2. SearchRec.Time - это время в формате DOS. Оно имеет низкую точность. Если вы сравните вывод своей программы с тем, что показывает Проводник - то увидите разницу в несколько секунд по времени. Лучше бы вам использовать метку времени записанную в SearchRec.FindData.ftCreationTime - это точное время.
3. Кроме того, TSearchRec.Time эквивалентно TSearchRec.FindData.ftLastWriteTime - т.е. последней дате модификации, а вовсе не времени создания файла. Это сообщение отредактировал(а) CodeMonkey - 1.12.2008, 15:52 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||||
|
|||||||
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
CodeMonkey, спасибо, учту
![]() |
|||
|
||||
Martisha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
и все равно, так выдается не то время(..в принципе разница не существенна, так что пойдет и так! ![]() |
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 18 Всего: 191 |
||||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
А время создания часом не перепутали с временем последней модификации? SearchRec.Time - содержит именно время последней модификации и вы сказали, что этот вариант вас устроил. Но в самом вопросе вы просили время создания, поэтому вам написали с SearchRec.FindData.ftCreationTime - временем создания. Если всё же нужно время последней модификации, то берите ftLastWriteTime вместо ftCreationTime (ещё есть ftLastAccessTime - время последнего доступа). Добавлено через 1 минуту и 12 секунд Хорошо бы тогда показать, какое время выдаётся, какое вы ожидаете увидеть и почему вы ожидаете увидеть это время (где вы его узнали). -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Martisha |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 15.10.2008 Где: казань Репутация: нет Всего: 1 |
CodeMonkey, почему то выдается время одинаковое для всех текстовых фалов..но ведь такого же не может быть!
наверное я ошиблась в формулировке, но то, что получилось меня устраивает..
обязательно попробую) Добавлено через 6 минут и 7 секунд CodeMonkey, действительно подошло)) ![]() |
||||
|
|||||
Chinese |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 2.12.2008 Репутация: нет Всего: нет |
Уважаемые форумчане помогите чайнику организовать поиск файлов на диске. У меня не получается не один промер который здесь указан. Программа ищет на корне диска, а в каталоги и подкаталоги заходить нехочет помогите чайнику. У меня цель написать программу которая бы отлавиливала расширение Tmp и удаляла его. Помогите пожалуйста.
|
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
||||
|
||||
Chinese |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 2.12.2008 Репутация: нет Всего: нет |
В том то и дело что если ты говоришь *.* То поиск идёт везде, а если ставишь вместо звёздочек скажем *.TXT то он ищет только накорню, в каталоги и подкаталоги не глядит.
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Ну разумеется: расширения-то у каталогов нет. Под такую маску они не подходят. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
Chinese, вот что то типа такого, с проверкой на расширение. Только соответственно сделай вместо добавления в список удаление файла.
|
|||
|
||||
Chinese |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 2.12.2008 Репутация: нет Всего: нет |
Я не понял, где здесь проверяется расширение. Пожалуйста обясните как его проверять. пробывал сравнивать rSearchRec.Name с *.tmp, но он ничего не выдавал. Помогите. |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |