Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1078474460
stainer
2004-03-05 11:14
2004.03.28
меню в стиле offce xp


3-1074854174
VolanD2002
2004-01-23 13:36
2004.03.28
DBGrid


3-1077803794
Pancha
2004-02-26 16:56
2004.03.28
Пипл! помогите с SQL запросом


1-1078689740
Митяй2
2004-03-07 23:02
2004.03.28
Приложение должно быть не только практичным, но и...


3-1077708799
Shram
2004-02-25 14:33
2004.03.28
Фильтрация, проблема.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский