[fpc-devel] Determin file size - how?

Hans-Peter Diettrich DrDiettrich1 at aol.com
Thu Dec 15 05:04:40 CET 2011


Tomas Hajny schrieb:

>> I wonder how to obtain the size of an file on disk. The only function I 
>> could find so far is FileSize, which requires an open File, but nothing 
>> for an file name :-(
>>
>> ATM FileSize(TEXT) would help, too, but FileSize only accepts an FILE, 
>> not TEXT :-(
> 
> What exactly do you want to achieve?

Effectively I'm missing a function FileSize(filename), similar to 
FileExists or FileAge, for general use.

> Is it because the file may be 
> open as a text and denied sharing wouldn't allow parallel opening for 
> reading as an untyped file (as suggested by Vinzent)? If this is the 
> case, there is a nasty but completely platform independent hack which 
> you could use (based on the fact that the underlying operating 
> systems and their APIs make no difference between file and text).

Normally I use TFileStream's, which have a Size property. But I find it 
nasty to open an file, when I only want to know its size. FPC (like 
Delphi) lacks some basic file/directory handling functions (Size, 
Remove, Rename...), at least none are listed in the "File handling 
overview". While a Delphi user can use the WinAPI for such tasks, a 
cross-platform development system should provide according 
platform-independent functions.

> Or is it because you don't want to open the file at all (e.g. to 
> avoid modifying the timestamp of the last file access)? If this is 
> the case, you probably need to stick to FindFirst, etc.

These subtle problems should be considered by the implementors of such
basic general-purpose functions.

DoDi




More information about the fpc-devel mailing list