Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2014, 21:42   #1
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
Восклицание время создания папки

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

P.S. Красным выделил где определяю время создания папки.

Код:
{Определение даты/времени создания файлы}
function FileTimeToDateTimeStr(FileTime:TFileTime):string;//Функция перевода сист.времени в строку
var
LocFTime:TFileTime;
SysFTime:TSystemTime;
DateStr:String;
Date,Time:TDateTime;
begin
FileTimeToLocalFileTime(FileTime,LocFTime);//Переводим дату файла в унививерсальное глобальное время
FileTimeToSystemTime(LocFTime,SysFTime);//Переводим унививерсальное глобальное времяв сист.время накомп-ре
try
with SysFTime do//теперь дата храниться в SysFTime.Спомощью ее выполнять
begin
{Превращаем данныев формат DateTime}
Date:=EncodeDate(wYear,wMonth,wDay);
DateStr:=DateToStr(Date);
Time:=EncodeTime(wHour,wMinute,wSecond,wMilliseconds);
end;
Result:=DateTimeToStr(Date+Time);//Объеденяем простым сложением и переводим дату в строку
except
Result:='';
end;
end;

{Получение списка файлов и информации о них}
procedure TForm1.UpdateFile(LV:TListView;aPath:String);
var
Handle:THandle;
FindData:TWin32FindData;
temp_ext,Temp_Cap,result:String;
Folders:TStringList;
i,te:Byte;
begin
LV.Items.BeginUpdate; //Начинаем прорисовку списка файлов
LV.Items.Clear; //Очищаем LV
Handle:=FindFirstFile(PChar(aPath+'*.*'),FindData);
if Handle<>INVALID_HANDLE_VALUE then
 try
  Folders:=TStringList.Create;
  while FindNextFile(Handle,FindData) do
  begin
    Temp_Cap:=ExtractFileName(FindData.cFileName); //Имя файлов
    temp_ext:=ExtractFileExt(FindData.cFileName); //Формат(расширение)
    if (FindData.dwFileAttributes and faDirectory)=faDirectory then Folders.Append(Temp_Cap)
     else
   with LV.Items.Add do
   begin
    if (FindData.dwFileAttributes and faDirectory)<>faDirectory then
    begin
      for te:=1 to length(Temp_Cap) do
      if Temp_Cap[te]='.' then
      Caption:=copy(Temp_Cap,1,te-1);
      SubItems.Add(Copy(temp_ext,2,Length(temp_ext)-1));
      SubItems.Add(FloatToStrF(FindData.nFileSizeHigh+FindData.nFileSizeLow,ffNumber,18,0));
    end
      else
      SubItems.Add('');
      SubItems.Add(FileTimeToDateTimeStr(FindData.ftLastWriteTime));
      Result:='';
      if (FILE_ATTRIBUTE_ARCHIVE and FindData.dwFileAttributes)>0 then Result:=Result+'a' else Result:=Result+'-';  //
      if (FILE_ATTRIBUTE_READONLY and FindData.dwFileAttributes)>0 then Result:=Result+'r' else Result:=Result+'-'; //Только чтение
      if (FILE_ATTRIBUTE_HIDDEN and FindData.dwFileAttributes)>0 then Result:=Result+'h' else Result:=Result+'-';   //Скрытые
      if (FILE_ATTRIBUTE_SYSTEM and FindData.dwFileAttributes)>0 then Result:=Result+'s' else Result:=Result+'-';   //Системные
      SubItems.Add(Result);
    end;
   end;
  for i:=0 to Folders.count-1 do with LV.Items.insert(i) do
  begin
   SubItems.Add('[Папка]');
   SubItems.Add('');
   SubItems.Add(FileTimeToDateTimeStr(FindData.ftCreationTime));
   Caption:=Folders[i];
  end;
  Folders.Free;
  finally
  LV.Items.EndUpdate; //Закончить прорисовку файлов
  end;
end;
HTTqp вне форума Ответить с цитированием
Старый 18.04.2014, 00:00   #2
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Подскажите пожалуйста.
HTTqp вне форума Ответить с цитированием
Старый 18.04.2014, 00:26   #3
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

HTTqp Не надоело этот код мусолить? Уже бы во фрилансе заказал.
XE5 вне форума Ответить с цитированием
Старый 18.04.2014, 01:01   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

FindData актуален только в пределах While .. do цикла.
Человек_Борща вне форума Ответить с цитированием
Старый 18.04.2014, 09:45   #5
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Папка(директория)- это тоже файл. Получайте через GetFileAttribute.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 18.04.2014, 10:15   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Скорее GetFileTime как-то так..
GetFileAttribute - вернет согласно названию, аттрибуты.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Блокировка формы на время создания папок и файлов jeysmook Общие вопросы .NET 5 26.04.2013 10:52
Вывод изображений из папки через заданное время в секундах на PHP сайте Killer_djon JavaScript, Ajax 15 18.01.2013 07:19
Время создания файла Drugnir C++ Builder 2 24.11.2011 17:11