Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> команда Dir, вывод даты создания текстового файла 
V
    Опции темы
Martisha
Дата 28.11.2008, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



Цитата(Christoph @  28.11.2008,  13:13 Найти цитируемый пост)
написано что в Time хранться тоже время создания, надо проверить

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

Добавлено через 1 минуту и 26 секунд
Цитата(Christoph @  28.11.2008,  13:13 Найти цитируемый пост)
FindData хранит время создания файла

а с FindData сложнее, не совсем понятно как с ним работать

Добавлено через 2 минуты и 5 секунд
и всправке про FindData ненаписано практически ничего
PM MAIL ICQ   Вверх
Christoph
Дата 28.11.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



с Time у меня выводит набор чисел...только через FindData нада, если получится выложу ....


--------------------
user posted image
PM MAIL ICQ   Вверх
aleksh
Дата 28.11.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 1
Всего: 13



Martisha, надо изменить формат вывода даты и времени, делфи под рукой нет, код привести не могу, но почитать об этом можно в справке по типу timedate (или datetime, где же моя память)
PM MAIL   Вверх
THandle
Дата 28.11.2008, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Стоп. Что вам тут надо? Вывести дату файла? Так есть же функция FileDateToDateTime например:

Код

ShowMessage(DateToStr(FileDateToDateTime(SearchRec.Time)));


Это сообщение отредактировал(а) THandle - 28.11.2008, 14:24
PM   Вверх
Martisha
Дата 28.11.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



вот такой вот код нашла, осталось только добавить в ListBox, чтоб рядом с названием файла отображалось:
Код

procedure TForm1.Button5Click(Sender: TObject);
Var
  Data: TWin32FindData;
  H: THandle;
  SysTime: TSystemTime;
  Date: TDateTime;
begin
 H := FindFirstFile(PChar('c:\ROU99STAT'), Data);
  If H <> Cardinal(-1) Then
  Try
    FileTimeToSystemTime(Data.ftCreationTime, SysTime);
    Date := SystemTimeToDateTime(SysTime);
    { Date }
    ShowMessage('дата создания ' + DateToStr(Date));
    { Time }
    ShowMessage(эвремя создания ' + TimeToStr(Date));
  Finally
    Windows.FindClose(H);
  End;
end;


Добавлено через 5 минут и 13 секунд
THandle, мне нужнои дату и времясоздания папки получить и чтоб все это выводилось в ListBox, т.е. там должно выводиться название файла и имя..

Добавлено через 13 минут и 48 секунд
Код

EditFile(Dir+SearchRec.name+DateToStr(FileDateToDateTime(SearchRec.Time)));

так только число выводит, а время как вывести?
PM MAIL ICQ   Вверх
Rrader
  Дата 28.11.2008, 14:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 18
Всего: 191



Martisha, нашли мой старый код smile 
Код

procedure TForm1.ScanFolderForTxt(Folder: String);
var
  Data: TWin32FindData;
  Res: DWORD;
  SysTime: TSystemTime;
  LocalTime: TFileTime;
  S: String;
  Date: TDateTime;
begin
  Folder := IncludeTrailingPathDelimiter(Folder);
  Res := FindFirstFile(PChar(Folder + '*.txt'), Data);
  if Res <> INVALID_HANDLE_VALUE then
  try
    with Form1.ListBox1.Items do
    begin
      BeginUpdate;
      try
        repeat
          FileTimeToLocalFileTime(Data.ftCreationTime, LocalTime);
          FileTimeToSystemTime(LocalTime, SysTime);
          Date := SystemTimeToDateTime(SysTime);
          S := Folder + Data.cFileName + ' (Дата создания: ' +
            DateToStr(Date) + ')';
          Add(S);
        until not FindNextFile(Res, Data);
      finally
        EndUpdate;
      end;
    end;  
  finally
    Windows.FindClose(Res);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ScanFolderForTxt('C:\MyFolder\');
end;

P.S.
Поправил

Это сообщение отредактировал(а) Rrader - 1.12.2008, 16:27


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Martisha
Дата 28.11.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



Цитата(Christoph @  28.11.2008,  14:17 Найти цитируемый пост)
только через FindData нада, если получится выложу 

было бы неплохо, самой не получается разобраться(

Добавлено через 2 минуты и 21 секунду
Цитата(Rrader @  28.11.2008,  14:43 Найти цитируемый пост)
Martisha, нашли мой старый код  

ага))

Добавлено через 12 минут и 44 секунды
вернее ее кто то ужеизменил и я уже нашла его)

Rrader, помоги мне разобраться в своейпроцедуре, пока ничего не пойму
PM MAIL ICQ   Вверх
Christoph
Дата 28.11.2008, 15:11 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Мой код медленееsmile 
Чтоб показать что мой код тупит допишу еще вот что
Код

Screen.Cursor := crHourGlass;

 smile 
Код

procedure TForm1.Button1Click(Sender: TObject);
Var SR:TSearchRec;
    FindRes:Integer;
    SystemTime: TSystemTime;
    Date:TDateTime;
begin
ListBox1.Clear;

FindRes:=FindFirst('c:\Downloads\*.rar',faAnyFile,SR);
Screen.Cursor := crHourGlass;
While FindRes=0 do
   begin
         FileTimeToSystemTime(SR.FindData.ftCreationTime, SystemTime);
         Date:=SystemTimeToDateTime(SystemTime);
         ListBox1.Items.Add(SR.Name+DateToStr(Date));
      FindRes:=FindNext(SR);
   end;
FindClose(SR);
end;


Это сообщение отредактировал(а) Christoph - 28.11.2008, 21:54


--------------------
user posted image
PM MAIL ICQ   Вверх
THandle
Дата 28.11.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Christoph, твой код будет не слабо тупить на папках с большим количеством файлов при обновлении ListBox'а. Тут нужен Begin(End)Update.

Где try..finally?

Почему оформления такое корявое?))
PM   Вверх
Christoph
Дата 28.11.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Цитата(THandle @ 28.11.2008,  15:27)
Christoph, твой код будет не слабо тупить на папках с большим количеством файлов при обновлении ListBox'а. Тут нужен Begin(End)Update.

Где try..finally?

Почему оформления такое корявое?))

Это кто тебе сказал Rrader?   smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
CodeMonkey
Дата 28.11.2008, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89





--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
THandle
Дата 28.11.2008, 15:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 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'а поддерживаю  smile 
PM   Вверх
Poseidon
Дата 28.11.2008, 16:57 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(THandle @  28.11.2008,  15:48 Найти цитируемый пост)
Насчет try..finally - должно присутствовать при всех освобождениях ресурсов в том числе и FindClose.
А по-моему try..finally должно присутствовать там, где хотя бы теоритически может возникнуть ошибка. А какая ошибка может возникнуть в приведенном коде? Только Out of memory при создании SR. Но ведь при этом SR и не создасться. try..finally тут лишнее, а вот Begin(End)Update действительно нужен smile

И оформление - это уже дело каждого. Строгих стандартов в оформлении нет. По мне так код сволне читаем.

Это сообщение отредактировал(а) Poseidon - 28.11.2008, 16:59


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
CodeMonkey
Дата 28.11.2008, 17:01 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Цитата(Poseidon @  28.11.2008,  16:57 Найти цитируемый пост)
 А какая ошибка может возникнуть в приведенном коде? Только Out of memory при создании SR.

Поручишся? Поддерживаю THandle.

Добавлено через 44 секунды
Цитата(Poseidon @  28.11.2008,  16:57 Найти цитируемый пост)
И оформление - это уже дело каждого.

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


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Martisha
Дата 1.12.2008, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



Christoph, очень странно, при использовании вашего кода выходит совсем не та дата..


Rrader, пробовала использовать ваш старый код, но почему то в ListBox ничего не добавляется..
что означает эта строка? вернее куда добавляется строка S?
Код

 Add(S);

и эта еще: 
Код

with Form1.ListBox1.Items do


Это сообщение отредактировал(а) Martisha - 1.12.2008, 09:04
PM MAIL ICQ   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1538 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.