Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Размер файла я узнаю таким вот способом:   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.079 c
3-1077132078
Andrey V.
2004-02-18 22:21
2004.03.28
ИбКонсоль не ест пароль.


1-1078585827
InfoCar1
2004-03-06 18:10
2004.03.28
кнопка [х] в заголовке окна


4-1073917408
TURKDL
2004-01-12 17:23
2004.03.28
Клавишы


14-1077791522
Undert
2004-02-26 13:32
2004.03.28
PHP ....


3-1077171427
Василий
2004-02-19 09:17
2004.03.28
DBase и прерывания