|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Время создания папки
Накидал код, но при выводе время создания папок у всех одинаково, как только не крутил уже все одно и тоже. Вот код:
Где выводится время подписал Код:
var Handle:THandle; FindData:TWin32FindData; Temp_ext,Temp_Cap,result:String; Folders:TStringList; i,Temp:Byte; begin ImageList1.Clear; LV.SmallImages:=ImageList1; 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 GetIcon(Temp_Cap); // Это вывод иконок Caption:=('gfgf'); SubItems.Add((temp_ext)); SubItems.Add(FloatToStrF(FindData.nFileSizeHigh+FindData.nFileSizeLow,ffNumber,18,0)); end else SubItems.Add(''); SubItems.Add(TimeToDateFile(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(TimeToDateFile(FindData.ftLastWriteTime)); // вывод времени создания папки Caption:=Folders[i]; end; Folders.Free; finally LV.Items.EndUpdate; // end; end; |
#2
|
||||
|
||||
Цитата:
Я думаю лучше обойтись без обходного списка и добавлять и папки и файлы сразу в TListView, или сразу в нужную позицию, или же добавлять как придётся, а в конце отсортировать в нужном порядке. Вот пример по первому варианту: Код:
procedure TForm1.Button2Click(Sender: TObject); var sr: TSearchRec; DirIdx: Integer; sSize, s: String; iSize: Int64; li: TListItem; begin LV.Items.BeginUpdate; try LV.Items.Clear; if FindFirst(aPath + '*.*', faAnyFile, sr) = NO_ERROR then try DirIdx := 0; repeat if (sr.Attr and faDirectory) = 0 then begin li := LV.Items.Add; Int64Rec(iSize).Lo := sr.FindData.nFileSizeLow; Int64Rec(iSize).Hi := sr.FindData.nFileSizeHigh; sSize := IntToStr(iSize); end else begin if (sr.Name = '.') or (sr.Name = '..') then Continue; li := LV.Items.Insert(DirIdx); Inc(DirIdx); sSize := '[Папка]'; end; li.Caption := ChangeFileExt(sr.Name, ''); li.SubItems.Add(ExtractFileExt(sr.Name)); li.SubItems.Add(sSize); s := '----'; if (sr.Attr and faArchive) <> 0 then s[1] := 'a'; if (sr.Attr and faReadOnly) <> 0 then s[2] := 'r'; if (sr.Attr and faHidden) <> 0 then s[3] := 'h'; if (sr.Attr and faSysFile) <> 0 then s[4] := 's'; li.SubItems.Add(s); li.SubItems.Add(DateTimeToStr(FileDateToDateTime(sr.Time))); until FindNext(sr) <> NO_ERROR; finally FindClose(sr); end; finally LV.Items.EndUpdate; end; end; |
#3
|
|||
|
|||
А можно ли как то просто изменить мой код, то есть может там лишний условие (if, while) убрать чтобы работал он. И выводилось время создания папки ровно?
Последний раз редактировалось HTTqp, 18.04.2014 в 22:34. |