![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать размер файла? [D7]
Кот © (2005-07-26 07:23:00)Есть видео файл, к которому известен путь, как узнать его размер? Заранее спасибо.
Anatoly Podgoretsky (2005-07-27 09:17:00) [1]function FindFirst: Integer;
Anatoly Podgoretsky (2005-07-27 09:15:00) [2]Antonn © (27.07.05 08:22) [28]
Тем что требует открытия файла
Кот (27.07.05 07:20) [27]
Думаешь там правильный код?
begin...end (2005-07-27 08:50:00) [3]> Lamer@fools.ua © (27.07.05 8:47) [30]
Точно. Вспомнил, в idGlobal она была. И в Delphi 7 есть.
P.S. Старый ник надоел? :-)
Lamer@fools.ua (2005-07-27 08:47:00) [4]> Кстати, насколько я помню, почти (или точно) такая же функция, как приведённая Вами в [11], существовала в Delphi 6 под именем FileSizeByName.
Собственно не в Delphi, а в Indy.
begin...end (2005-07-27 08:37:00) [5]> Antonn © (27.07.05 8:22) [28]
Тем, что, возможно, файл не удастся открыть даже для чтения из-за отсутствия прав.
Кстати, насколько я помню, почти (или точно) такая же функция, как приведённая Вами в [11], существовала в Delphi 6 под именем FileSizeByName. В Delphi 7 её, к счастью, убрали.
Antonn (2005-07-27 08:22:00) [6]Кто нибудь может растолковать, чем мой метод плох?
Кот (2005-07-27 07:20:00) [7]Всем спасибо пример [17] от Sectey работает .
Anatoly Podgoretsky (2005-07-26 15:35:00) [8]begin...end © (26.07.05 15:27) [25]
И упомянутый TFileStream то же.
Это он чего то вякнул не подумав.
К тому же проблема не гигабайтами
begin...end (2005-07-26 15:27:00) [9]> Antonn © (26.07.05 15:16) [23]
GetFileSize тоже нормально работает с файлами, размер которых превышает 4 ГБ.
Anatoly Podgoretsky (2005-07-26 15:18:00) [10]begin...end © (26.07.05 13:39) [22]
И правда о чем он это?
Antonn (2005-07-26 15:16:00) [11]
>Все примеры, кроме [1] не будут отрабатывать на очень
> > длинных файлах, так как возвращают только 4 байта.
до 4 Гб?
begin...end (2005-07-26 13:39:00) [12]> ANB © (26.07.05 9:51) [12]
> Все примеры, кроме [1] не будут отрабатывать на очень
> длинных файлах, так как возвращают только 4 байта.
Вы о чём?
Anatoly Podgoretsky (2005-07-26 13:26:00) [13]И чешет в затылке.
Fay (2005-07-26 10:41:00) [14]2 Anatoly Podgoretsky © (26.07.05 10:28) [19]
Анатолий, это борьба с ветряными мельницами. Пусть считают проценты 8)
Anatoly Podgoretsky (2005-07-26 10:28:00) [15]Ни один пример не будет работать нормально, кроме примеров с FindFirst, почему советую подумать на досуге. Все оговорки насчет процентов это самоуспокоение
evvcom (2005-07-26 10:15:00) [16]
> Dust © (26.07.05 10:01) [16]
Сейчас проснется модератор, и ты получишь RO. И будешь как та собака, которая все понимает, только сказать ничего не может. :)
Sectey (2005-07-26 10:08:00) [17]Ребята зачем открывать файл что бы узнать его размер?
procedure TForm1.btn1Click(Sender: TObject);
var
sr: TSearchRec;
begin
if FindFirst('Твой файл', faAnyFile, sr) = 0 then
begin
ShowMessage(IntToStr(sr.Size));
end;
FindClose(sr);
end;
Dust (2005-07-26 10:01:00) [18]Удалено модератором
Примечание: МАТ
ANB (2005-07-26 09:56:00) [19]
> Mamed (26.07.05 09:53) [14]
- сколько лишних телодвижений.
Mamed (2005-07-26 09:53:00) [20]var
f: file of Byte;
size : Longint;
S: string;
y: Integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(f, OpenDialog1.FileName);
Reset(f);
size := FileSize(f);
S := 'File size in bytes: ' + IntToStr(size);
y := 10;
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
S := 'Seeking halfway into file...';
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
Seek(f,size div 2);
S := 'Position is now ' + IntToStr(FilePos(f));
Canvas.TextOut(5, y, S);
CloseFile(f);
end;