Problem z FileSize

0

Witam wszystkich !

Mam taką oto funkcję :

function FSize(filename:string):LongWord;
var
  F:file of byte;
begin
 if FileExists(filename) then
  begin
   {$I-}
   AssignFile(f,filename);
   Reset(f);
   result:=FileSize(f);
   CloseFile(f);
   {$I+}
  end
 else
  result:=0;
end;

...której zadaniem jest szybko zwracać rozmiar podanego pliku.
Jednak funkcja FileSize zaczyna trochę świrować, bo dla pliku ok. 700 MB (po odpowiednim podzieleniu resulta) wskazuje 4096 MB!!

Czy jest więc jakaś inna funkcja, która potrafi wskazać prawidłowo rozmiar nawet tak dużych plików ???

0

Na swissdelphicenter.com w dziale tips masz rozwiązanie.

0

Dzięki, działa.

Gdyby ktoś miał podobny problem, to funkcja powinna wyglądać tak :

function FSize(filename:string):LongWord;
var 
  FileHandle: THandle; 
  FileSize: LongWord; 
begin
 if FileExists(filename) then
  begin
   FileHandle := CreateFile(PChar(filename),
    GENERIC_READ, 
    0, {exclusive} 
    nil, {security} 
    OPEN_EXISTING, 
    FILE_ATTRIBUTE_NORMAL, 
    0); 
  FileSize   := GetFileSize(FileHandle, nil); 
  Result     := FileSize;
  CloseHandle(FileHandle);
  end
 else
  result:=0;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1