Последние записи
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
29th
Ноя
Как в каталоге отличить файлы от папок.
Posted by maloy under Delphi, Архив
Gigan.
Подскажите, по какому признаку можно различить в каталоге папки от файлов и наоборот, чтоб совершать над ними соответствующие действия! Спасибо!
Virtson.
Вот кусок кода из проги, которая работает
в Listview получаем список вида:
d:\folder\subfolder
->file1.xxx
->file2.xxx
…
как видите, процедура рекурсивная …
procedure TMainF.FindFiles(APath: String);
{***}
var
FSearchRec,
DSearchRec: TSearchRec;
FindResult: integer;
fst1, fst2: AnsiString;
D_Nwas: boolean;
fsz: int64;
function IsDirNotation(ADirName: String): Boolean;
begin
Result := (ADirName = '.') or (ADirName = '..');
end;
begin
APath := GetDirectoryName(APath); // Obtain a valid directory name
FindResult := FindFirst(APath+FFileName,
faAnyFile+faHidden+faSysFile+faRead Only+faArchive, FSearchRec);
D_Nwas:= true;
try
{ Continue to search for the files according to the specified
mask. If found, add the files and their paths to the listbox.}
Current.Caption:= aPath;
while FindResult = 0 do
begin
if D_Nwas then
begin
lbFiles.Items.Add(aPath);
D_Nwas:= false;
end;
fst:= LowerCase(FSearchRec.Name);
if sz_on then
begin
fsz:= FSearchRec.Size;
sum:= sum + fsz;
CurrLine.Caption:= IntToStr(sum);
end;
if dt_on then
Fst2:= DateToStr(FileDateToDateTime(FSearc hRec.Time));
if sz_on then
begin
if dt_on
then lbFiles.Items.Add( Format( '%s'#9'%s'#9'%10.2f'#9'%s', [fchr, fst2, fsz/1024, fst]) )
else lbFiles.Items.Add( Format( '%s'#9'%10.2f'#9'%s', [fchr, fsz/1024, fst]) )
end
else lbFiles.Items.Add( Format( '%s'#9'%s', [fchr, fst]) );
fst:= LowerCase(aPath)+fst;
FindResult := FindNext(FSearchRec);
inc(num);
Number.Caption:= intToStr(num);
if random(10)<4 then Application.ProcessMessages;
if stop then
begin
FindClose(FSearchRec);
exit;
end;
end;
{ Now search the sub-directories of this current directory. Do this
by using FindFirst to loop through each subdirectory, then call
FindFiles (this function) again. This recursive process will
continue until all sub-directories have been searched. }
FindResult := FindFirst(APath+'*.*', faDirectory, DSearchRec);
while FindResult = 0 do
begin
if ((DSearchRec.Attr and faDirectory) = faDirectory) and not
IsDirNotation(DSearchRec.Name) then
FindFiles(APath+DSearchRec.Name); // Recursion here
FindResult := FindNext(DSearchRec);
if random(10)<5 then Application.ProcessMessages;
if stop then
begin
FindClose(FSearchRec);
exit;
end;
end;
finally
FindClose(FSearchRec);
end;
end;
Storm.
Если я правильно понял вопрос, то можно отличить файл от папки функциями DirectoryExists и FileExists.
тема на форуме от 2006 года
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)