![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |