![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать размер файла? [D7]
Кот © (2005-07-26 07:23:00)Есть видео файл, к которому известен путь, как узнать его размер? Заранее спасибо.
Mamed (2005-07-26 09:53:00) [21]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.
ANB (2005-07-26 09:51:00) [22]Все примеры, кроме [1] не будут отрабатывать на очень длинных файлах, так как возвращают только 4 байта. Имхо.
Antonn (2005-07-26 09:44:00) [23]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;
Mamed (2005-07-26 09:43:00) [24]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;
Dust (2005-07-26 09:42:00) [25]единственное условие - доступность файла для чтения...
а потому в 90% случаев этот пример будет работать, хотя согласен,
твой вариант не будет работать только если нет прав доступа папки на чтение
Anatoly Podgoretsky (2005-07-26 09:37:00) [26]Dust © (26.07.05 09:30) [6]
Только при определенных условиях, а правильный ответ, который работает во всех условиях указан в [1]
Anatoly Podgoretsky (2005-07-26 09:31:00) [27]Mamed (26.07.05 09:28) [4]
А вот не надо вешать лапшу на уши. Здесь не только указаные ошибки, но еще и неверный результат. Но не получится и с включением указаных операторов.
Dust (2005-07-26 09:30:00) [28]вот этот пример работатет точно
Dust (2005-07-26 09:29:00) [29]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;
Mamed (2005-07-26 09:28:00) [30]esli bi ne probival to ne napisal bi.zdes ... zabil
tam esho i nujen AssiginFile CloseFile
Anatoly Podgoretsky (2005-07-26 09:15:00) [31]Mamed (26.07.05 08:22) [2]
Сам то проверял эту ересь?
Mamed (2005-07-26 08:22:00) [32]Var f:File;
begin
v_size:=FileSize(f);
end;
Fay (2005-07-26 07:41:00) [33]2 Кот (26.07.05 7:23)
FindFirstFile + FindClose + F1