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

Вниз

Как узнать размер файла?   Найти похожие ветки 

 
Кот   (2005-07-26 07:23) [0]

Есть видео файл, к которому известен путь, как узнать его размер? Заранее спасибо.


 
Fay ©   (2005-07-26 07:41) [1]

2 Кот   (26.07.05 7:23)
FindFirstFile + FindClose + F1


 
Mamed   (2005-07-26 08:22) [2]

Var f:File;
begin
 v_size:=FileSize(f);
end;


 
Anatoly Podgoretsky ©   (2005-07-26 09:15) [3]

Mamed   (26.07.05 08:22) [2]
Сам то проверял эту ересь?


 
Mamed   (2005-07-26 09:28) [4]

esli bi ne probival to ne napisal bi.zdes ... zabil
tam esho i nujen AssiginFile CloseFile


 
Dust ©   (2005-07-26 09:29) [5]

procedure TForm1.Button1Click(Sender: TObject);
var
 hFile, size_ , I, N : dword;
 begin
     hFile:=CreateFile(PChar(Edit1.Text), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
     if (hFile <> INVALID_HANDLE_VALUE) then  begin
         size_:=GetFileSize(hFile, nil);
         MessageBox (0,Pchar(IntToStr (size_) + " &#225;&#224;&#233;&#242;"), "App Name ", MB_OK);
         CloseHandle(hFile);
         end;
 end;


 
Dust ©   (2005-07-26 09:30) [6]

вот этот пример работатет точно


 
Anatoly Podgoretsky ©   (2005-07-26 09:31) [7]

Mamed   (26.07.05 09:28) [4]
А вот не надо вешать лапшу на уши. Здесь не только указаные ошибки, но еще и неверный результат. Но не получится и с включением указаных операторов.


 
Anatoly Podgoretsky ©   (2005-07-26 09:37) [8]

Dust ©   (26.07.05 09:30) [6]
Только при определенных условиях, а правильный ответ, который работает во всех условиях указан в [1]


 
Dust ©   (2005-07-26 09:42) [9]

единственное условие - доступность файла для чтения...
а потому в 90% случаев этот пример будет работать, хотя согласен,
твой вариант не будет работать только если нет прав доступа  папки на чтение


 
Mamed   (2005-07-26 09:43) [10]

3 goda kusok rabotayusego koda:

 Fsize:=FileSize(f); dayet v baytax

var R:TStockFileFormat;F:TStockFile;
  Unitlinerefs:Arrayofstring;
  UnitSetref:Integer;
  result_,i:Integer;
  Opcode:TEpuDataOperations;
  RFinded: Boolean;
  Fsize:Integer;
  Fr:TStockImportResultFile;
  r1:TStockImportResultFormat;
  LFilename_:String;
  SqlStok:String;
Begin
 SqlStok:="SELECT LOGICALREF,ACTIVE,CARDTYPE,CODE,NAME,STGRPCODE,PRODUCERCODE,SPECODE,CYPHCODE,CLASSTYPE,PURCHBRWS,SALESBRWS,MTRLBRWS,VAT, ";
CAPIBLOCK_CREATEDHOUR,CAPIBLOCK_CREATEDMIN,CAPIBLOCK_CREATEDSEC,";
 SqlStok:=SqlStok+" QPRODSRCINDEX,EXTACCESSFLAGS,PACKET,SALVAGEVAL2,SELLVAT,RETURNVAT FROM LG_"+Glb_CompanyCode+"_ITEMS ";
 AssignFile(f,Filename_);
 LFilename_:=ExtractFileName(Filename_);
 LFilename_:=EpuTemplateFolder+"\"+Copy(LFilename_,1,length(LFilename_)-length(stockitmext)-1)+"."+stocklogext;
 AssignFile(fr,LFilename_);
 Rewrite(fr);
 Reset(f);
 Try
   If Frm_stockimport<> Nil Then
     Frm_stockimport.StPro.Min:=0;
 except
 end;
 Fsize:=FileSize(f);
 Try
   If Frm_stockimport<> Nil Then
   Begin
     Frm_stockimport.StPro.Max:=Fsize;
     Frm_stockimport.StPro.Position:=0;
   End;
 except
 End;


 
Antonn ©   (2005-07-26 09:44) [11]

function GetFileSize(FileName: String): Integer;
var
 FS: TFileStream;
begin
 try
   FS := TFileStream.Create(Filename, fmOpenRead);
 except
   Result := -1;
 end;
 if Result <> -1 then Result := FS.Size;
 FS.Free;
end;


 
ANB ©   (2005-07-26 09:51) [12]

Все примеры, кроме [1] не будут отрабатывать на очень длинных файлах, так как возвращают только 4 байта. Имхо.


 
Mamed   (2005-07-26 09:53) [13]

Returns the size of a file in bytes or the number of records in a record file.

Unit

System

Category

I/O routines

function FileSize(var F): Integer;

Description

Call FileSize to determine the size of the file specified by the file variable F. To use FileSize, the file must be open. If the file is empty, FileSize(F) returns 0.

Note: FileSize can"t be used on a text file.


 
Mamed   (2005-07-26 09:53) [14]

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;


 
ANB ©   (2005-07-26 09:56) [15]


> Mamed   (26.07.05 09:53) [14]
- сколько лишних телодвижений.


 
Dust ©   (2005-07-26 10:01) [16]

Удалено модератором
Примечание: МАТ


 
Sectey ©   (2005-07-26 10:08) [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;


 
evvcom ©   (2005-07-26 10:15) [18]


> Dust ©   (26.07.05 10:01) [16]

Сейчас проснется модератор, и ты получишь RO. И будешь как та собака, которая все понимает, только сказать ничего не может. :)


 
Anatoly Podgoretsky ©   (2005-07-26 10:28) [19]

Ни один пример не будет работать нормально, кроме примеров с FindFirst, почему советую подумать на досуге. Все оговорки насчет процентов это самоуспокоение


 
Fay ©   (2005-07-26 10:41) [20]

2 Anatoly Podgoretsky ©   (26.07.05 10:28) [19]
Анатолий, это борьба с ветряными мельницами. Пусть считают проценты 8)


 
Anatoly Podgoretsky ©   (2005-07-26 13:26) [21]

И чешет в затылке.


 
begin...end ©   (2005-07-26 13:39) [22]

> ANB ©   (26.07.05 9:51) [12]

> Все примеры, кроме [1] не будут отрабатывать на очень
> длинных файлах, так как возвращают только 4 байта.

Вы о чём?


 
Antonn ©   (2005-07-26 15:16) [23]


>Все примеры, кроме [1] не будут отрабатывать на очень
> > длинных файлах, так как возвращают только 4 байта.

до 4 Гб?


 
Anatoly Podgoretsky ©   (2005-07-26 15:18) [24]

begin...end ©   (26.07.05 13:39) [22]
И правда о чем он это?


 
begin...end ©   (2005-07-26 15:27) [25]

> Antonn ©   (26.07.05 15:16) [23]

GetFileSize тоже нормально работает с файлами, размер которых превышает 4 ГБ.


 
Anatoly Podgoretsky ©   (2005-07-26 15:35) [26]

begin...end ©   (26.07.05 15:27) [25]
И упомянутый TFileStream то же.
Это он чего то вякнул не подумав.
К тому же проблема не гигабайтами


 
Кот   (2005-07-27 07:20) [27]

Всем спасибо пример [17] от Sectey работает .


 
Antonn ©   (2005-07-27 08:22) [28]

Кто нибудь может растолковать, чем мой метод плох?


 
begin...end ©   (2005-07-27 08:37) [29]

> Antonn ©   (27.07.05 8:22) [28]

Тем, что, возможно, файл не удастся открыть даже для чтения из-за отсутствия прав.

Кстати, насколько я помню, почти (или точно) такая же функция, как приведённая Вами в [11], существовала в Delphi 6 под именем FileSizeByName. В Delphi 7 её, к счастью, убрали.


 
Lamer@fools.ua ©   (2005-07-27 08:47) [30]

>Кстати, насколько я помню, почти (или точно) такая же функция, как приведённая Вами в [11], существовала в Delphi 6 под именем FileSizeByName.

Собственно не в Delphi, а в Indy.


 
begin...end ©   (2005-07-27 08:50) [31]

> Lamer@fools.ua ©   (27.07.05 8:47) [30]

Точно. Вспомнил, в idGlobal она была. И в Delphi 7 есть.

P.S. Старый ник надоел? :-)


 
Anatoly Podgoretsky ©   (2005-07-27 09:15) [32]

Antonn ©   (27.07.05 08:22) [28]
Тем что требует открытия файла

Кот   (27.07.05 07:20) [27]
Думаешь там правильный код?


 
Anatoly Podgoretsky ©   (2005-07-27 09:17) [33]

function FindFirst: Integer;



Страницы: 1 вся ветка

Текущий архив: 2005.08.14;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.033 c
4-1117616006
Yandexman
2005-06-01 12:53
2005.08.14
Как изменить фоновую картинку на рабочем столе.


1-1122376796
MiSt
2005-07-26 15:19
2005.08.14
отображать eml файл при помощи Outlook


4-1118771362
Unknown user
2005-06-14 21:49
2005.08.14
Утечка памяти -помогите!


11-1104254184
miek
2004-12-28 20:16
2005.08.14
KOL: свежие глюки


1-1122463037
Pasha L
2005-07-27 15:17
2005.08.14
зашить один ехе-шник в другой