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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2023, 11:30   #1
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 248
По умолчанию поиск файлов в 0 байт

добрый день, программисты.

подскажите как сделать поиск файлов с 0 байтом. то есть, пустые и удалить их?

Код:
function FileExistsAndEmpty(const AFileName: string): Boolean;
var
  sr: TSearchRec;
begin
  Result := FindFirst(AFileName, faAnyFile, sr) = 0;
  if Result then begin // file exists ...
    Result := sr.Size = 0;
    FindClose(sr);
  end;
end;

потипа такого
Код:
Find0File('c:\folder\');
AppData вне форума Ответить с цитированием
Старый 16.09.2023, 12:53   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Для поиска следующего файла надо в цикле использовать функцию FindNext.
Arigato на форуме Ответить с цитированием
Старый 17.09.2023, 16:12   #3
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
procedure Find0File(dir: string);
var
  sr: TSearchRec;
begin
   ChDir(dir);
   if IOResult<>0 then
      Exit;
   if FindFirst('*', faAnyFile, sr)=0 then
   repeat
      if (sr.Name='.') or (sr.Name='..') then
         Continue;
      if sr.Size=0 then
         DeleteFile(sr.Name);
   until FindNext(sr)<>0;
   FindClose(sr);
end;

function FileExistsAndEmpty(const AFileName: string): Boolean;
var FindData: TWIN32FindData;
    S: int64;
begin
   Result:=false;
   if not FileExists(AFileName) then
      Exit;
   FindFirstFile(PChar(AFileName), FindData);
   S:=FindData.nFileSizeHigh;
   S:=S shl 32;
   S:=S or FindData.nFileSizeLow;
   Result:=S=0;
end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 19.09.2023, 11:28   #4
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 248
По умолчанию

newerow1989, оно самое. только почему то когда создаю пустой rar или zip файл он уже с каким то весом.
AppData вне форума Ответить с цитированием
Старый 19.09.2023, 15:50   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от AppData Посмотреть сообщение
пустой rar или zip файл он уже с каким то весом
Есть такое понятие, как заголовки, которые присутствуют во многих форматах файлов.

Если такие файлы тоже надо учесть и удалить, то можно сделать дополнительную проверку. Условие для удаления: либо файл нулевого размера, либо проверяем все известные расширения и сравниваем с размером пустого файла конкретного типа.
Arigato на форуме Ответить с цитированием
Старый 19.09.2023, 16:03   #6
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 248
По умолчанию

Спасибо! допилил!
AppData вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Читать много файлов по несколько байт win32 _Osaka Общие вопросы C/C++ 8 12.02.2017 16:57
Выделение нужных байт из массива байт Punk1911 Помощь студентам 6 22.04.2014 13:40
Функция изменяет старший байт числа на заданное значение,не изменяя младший байт ( C++ ) Любимый_1 Помощь студентам 3 07.10.2013 16:42
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) Beren42 Помощь студентам 0 15.12.2010 20:32
Поиск байт Gerzs Общие вопросы Delphi 9 06.11.2009 17:28