![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Размер ЗАНЯТОГО файла, как его определяют проводник и WinCommande
Layner © (2006-09-16 23:00:00)Здравствуйте! Есть такой рабочий код функции:
function GetMyFileSize(FileName: String): Integer;
var
FS: TFileStream;
begin
try
FS := TFileStream.Create(Filename, fmShareDenyNone);
except
Result := -1;
end;
if Result <> -1 then Result := FS.Size;
FS.Free;
end;
Но этот код не определяет размер файла, если тот файл занят. Т.е. как пример, база Access, открыт монопольно, по функции - размер не могу определить, а в проводнике/WinCimmander размер в байтах, и он меняется, если я бд меняю... Ключи все менял fmShareDenyNone - самый не требовательный.. Заранее благодарю.
Ketmar (2006-09-17 10:50:00) [1]> [7] Anatoly Podgoretsky © (17.09.06 10:48)
так я это и имел в виду. %-)
Anatoly Podgoretsky (2006-09-17 10:48:00) [2]Он не только неверный, но и не рабочий, правь не правь. Guav дал правильный ответ.
Ketmar (2006-09-17 10:29:00) [3]так один фиг код неверный изначально, зачем правите? %-)
Loginov Dmitry (2006-09-17 10:25:00) [4]И до try следует делать
Result := 0;
Loginov Dmitry (2006-09-17 10:24:00) [5]Layner © (16.09.06 23:00)
if Result <> -1 then Result := FS.Size;
FS.Free;
Правильней было бы:
if Result <> -1 then
begin
Result := FS.Size;
FS.Free;
end;
guav (2006-09-16 23:13:00) [6]> try
> FS := TFileStream.Create(Filename, fmShareDenyNone);
> except
> Result := -1;
> end;
> if Result <> -1 then Result := FS.Size;
> FS.Free;
Код кстаит не верный.
При исклюении в FS.Free может попасть то угодно. Не так это правильно делать...
guav (2006-09-16 23:11:00) [7]FindFirstFile
Layner (2006-09-16 23:02:00) [8]Т.е. вопрос в том, может есть рабочий вариант подобной функции? И ещё, монопольно заянтый файл даже не возможно скопировать... А вот размер определить его крайне необходимо :(