Нужно получить размер файла под любыми платформами.
Сейчас использую функцию
function TFileManager.GetFileSize(APath : String) : String;
Var F : file of Byte;
AFileSizeByte : Integer;
AFileSizeMbyte : Double;
begin
Result:='';
AssignFile(F, APath);
FileMode := 0; // readonly
try
try
Reset(F);
AFileSizeByte:=FileSize(F);
CloseFile(f);
except
end;
finally
AFileSizeMbyte:=AFileSizeByte/1048576;
Result:=Format('%6.3f',[AFileSizeMbyte])+' Mbyte';
end;
end;
Работает, но есть одно но - под Windows, если проверяю exe файл, антивирус (в данном случае Защитник Windows) унюхивает что производится открытие файла и начинает его проверять на вирусы. Из за этого сканирование директории с большим количеством исполняемых файлов подвешивает основной поток приложения.
Вопрос в следующем - нет ли другого способа получения размера? Странно что TFile, TPath или TDirectory не содержат такого полезного метода.
В данный момент двигаюсь в направлении отдельного потока получения размера, но решение не красивое, хочется быстро и сразу.
Вопрос
Евгений Корепов
Нужно получить размер файла под любыми платформами.
Сейчас использую функцию
Работает, но есть одно но - под Windows, если проверяю exe файл, антивирус (в данном случае Защитник Windows) унюхивает что производится открытие файла и начинает его проверять на вирусы. Из за этого сканирование директории с большим количеством исполняемых файлов подвешивает основной поток приложения.
Вопрос в следующем - нет ли другого способа получения размера? Странно что TFile, TPath или TDirectory не содержат такого полезного метода.
В данный момент двигаюсь в направлении отдельного потока получения размера, но решение не красивое, хочется быстро и сразу.
Ссылка на комментарий
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.