Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Вниз
Размер файла я узнаю таким вот способом: Найти похожие ветки
← →
Miwa © (2004-03-11 00:19) [0]
FileSize:=TFileStream.Create(FromWhat, fmOpenRead).Size;
Чем мне это грозит?
Ногами прошу не пинать :о)).
← →
Chlavik © (2004-03-11 00:43) [1]Немного не освободлённой памятью и тормозами а так больше ничем ...
Моя qeyrwbz правда не намного быстрее при условии конечно что hFile у тебя нету ...Function GetFileSize(FilePath:string):integer;
var h:THandle;
begin
h:=FileOpen(FilePath,fmOpenRead);
if h<>-1 then
begin
Result:=FileSeek(h,0,2);
FileClose(h);
end else Result:=0;
end;
← →
Cobalt © (2004-03-11 00:49) [2]Это грозит тем, что объкт класса TFileStream открывает файл, но знаете ли ВЫ, где произойдёт его закрытие?
← →
Pat © (2004-03-11 00:59) [3]Если файл уже будет открыт как fmShareExclusive, возможно, у тебя будут проблемы (а может и не будут :-)) я не проверял). Не проще ли использовать FindFirst?
← →
Defunct © (2004-03-11 01:02) [4]А не проще использовать FileSize(F)?
← →
miwa © (2004-03-11 02:53) [5]Получается, что:
1.
var f: file of byte;
i:integer;
begin
assignfile(f,"D:\qwerty.uio")
i:=FileSize(f);
closefile(f);
end;
2.
var fstr: TFileSteram;
i:integer;
begin
fstr:=TFileStream.Create(FromWhat, fmOpenRead);
i:=fstr.Size;
fstr.Free;
end;
3.
hlavik © (11.03.04 00:43) [1]
В любом случае длинновато...
А покороче нету?
← →
Defunct © (2004-03-11 03:33) [6]> В любом случае длинновато...
> А покороче нету?
Напишите свою функцию:Function SizeOfFile(FileName:String):LongInt;
Var Handle:Integer;
Begin
Try
Handle:=FileOpen(FileName,fmOpenRead);
Result:=FileSeek(Handle,0,2);
FileClose(Handle);
Except
Result := 0;
End;
End;
И используйте ее, как:SizeOfFile("D:\qwerty.uio");
То, что по скорости это самый эффективный вариант сомнений нет.
← →
Defunct © (2004-03-11 03:38) [7]Зы, а для более общего случая, чтобы не возникало вопросов существует ли такой файл, в исключении присваиваем отрицательную длинну файла:
Function SizeOfFile(FileName:String):LongInt;
Var Handle:Integer;
Begin
Try
Handle:=FileOpen(FileName,fmOpenRead);
Result:=FileSeek(Handle,0,2);
FileClose(Handle);
Except
Result := -1;
End;
End;
← →
mim (2004-03-11 07:02) [8]Defunct © (11.03.04 03:38) [7]
веселья ради :)
Function SizeOfFile(FileName:String):LongInt;
Var Handle:Integer;
Begin
Try
Handle:=FileOpen(FileName,fmOpenRead);
try
Result:=FileSeek(Handle,0,2);
finally
FileClose(Handle);
end;
Except
Result := -1;
End;
End;
← →
VMcL © (2004-03-11 07:08) [9]Ну вы, ребята, и бред понаписывали. Какой except для FileOpen?! Help хоть кто-то читает иногда?
If the return value is 0 or greater, the function was successful and the value is the file handle of the opened file. A return value of -1 indicates that an error occurred.
← →
Defunct © (2004-03-11 07:30) [10]VMcL © (11.03.04 07:08) [9]
Try.. Except [6][7] для страховки. FileSeek сам по себе возвратит -1, если handle недействительный.
If FileSeek is successful, it returns the new position of the file pointer; otherwise, it returns -1.
← →
VMcL © (2004-03-11 23:15) [11]>>Defunct © (11.03.04 07:30) [10]
WinAPI-функции не вызывают исключений, разве что в случае передачи им некорректных указателей или в результате сбоя на уровне ядра (BSOD). Последнее можно вообще не учитывать, так как происходит останов системы.
← →
Fay © (2004-03-12 07:51) [12]2Miwa © (11.03.04 00:19)
Это дико!!! Это похоже на измерение веса камаза путём вставания на весы с камазом и без с последующим нахождением разницы.
Можно так делать, но это дико!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c