Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
Кот   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.014 c
3-1120456744
Xmen
2005-07-04 09:59
2005.08.14
master-detail


8-1113065140
Comrade
2005-04-09 20:45
2005.08.14
Эквалайзер Звука


4-1118505430
Adham
2005-06-11 19:57
2005.08.14
Font in Caption of the Forms


1-1122281099
-=snoop=-
2005-07-25 12:44
2005.08.14
как вставить в меню изображение (*.bmp, *.jpg)


1-1122402394
iskatel
2005-07-26 22:26
2005.08.14
как сжать поток





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский