Code: Selecteer alles
PROCEDURE FileSize (FileName : Strings.String) : CARDINAL;
CONST Chunk = 1024;
VAR n, size : CARDINAL;
m : INTEGER;
inF : BasicIO.File;
tmpPool : MemPools.MemPool;
tmpPtr : POINTER TO CHAR;
BEGIN
n := 0; m := 0;
BasicIO.OpenInput (inF, FileName);
IF NOT BasicIO.DONE THEN RETURN 0 END;
MemPools.NewPool (tmpPool);
MemPools.PoolAllocate (tmpPool, tmpPtr, Chunk);
REPEAT
BasicIO.Read (inF, tmpPtr, Chunk, m);
INC (n, Chunk)
UNTIL m # Chunk;
DEC (n, Chunk);
size := n + CARDINAL (m);
MemPools.KillPool (tmpPool);
BasicIO.Close (inF);
RETURN size
END FileSize;