Форум: "Основная";
Текущий архив: 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_) + " áàéò"), "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