newsgroups-index (beta)

Current group: dbase.bug-reports

file.size() bug

file.size() bug  
Roland Wingerter
 Re: file.size() bug  
Marty Kay
From:Roland Wingerter
Subject:file.size() bug
Date:Sat, 1 Jan 2005 20:03:59 +0100
file.size does return a negative value if a file is larger than 2 GB.

The code below can be used to reproduce the problem. It includes a
workaround posted by Ivar B. Jessen in dbase.deutsch on 31.12.2004.

Roland


// Create_large_file.prg
// Purpose: Show file.size() error with large files
clear

cFile = "LargeFile.txt"

if file(cFile)
erase (cFile)
endif

fOut = new file()
fOut.Create(cFile)

cString = replicate("0",100000 ) // 100 kB
for i=1 to 40000
fOut.puts(cString)
if new file().size(cFile) < 0
? i, "Negative file size"
exit
endif
next i
catch( exception e)
? msgbox("Code: " + e.code +", Message: "+ e.message, "Exception")
endtry
fOut.Close()

? "file.Size()", new file().size(cFile)
?
dir (cFile)
?
? "findFileSize()", findFileSize(cFile)
return


function findFileSize(cFile)
// code by Ivar B. Jessen,
// dbase.deutsch 31.12.2004
local nSize
nSize = new file().size(cFile)
return iif(nSize < 0, 0xFFFFFFFF + nSize + 1, nSize)
From:Marty Kay
Subject:Re: file.size() bug
Date:Tue, 18 Jan 2005 11:40:47 -0500
Hi Roland,

I've entered QAID: 5155 for this.


Thanks,

- Marty Kay (dBI) -


"Roland Wingerter" wrote in message
news:FCAUCWD8EHA.1952@news-server...
> file.size does return a negative value if a file is larger than 2 GB.
>
> The code below can be used to reproduce the problem. It includes a
> workaround posted by Ivar B. Jessen in dbase.deutsch on 31.12.2004.
>
> Roland
>
>
> // Create_large_file.prg
> // Purpose: Show file.size() error with large files
> clear
>
> cFile = "LargeFile.txt"
>
> if file(cFile)
> erase (cFile)
> endif
>
> fOut = new file()
> fOut.Create(cFile)
>
> cString = replicate("0",100000 ) // 100 kB
> for i=1 to 40000
> fOut.puts(cString)
> if new file().size(cFile) < 0
> ? i, "Negative file size"
> exit
> endif
> next i
> catch( exception e)
> ? msgbox("Code: " + e.code +", Message: "+ e.message, "Exception")
> endtry
> fOut.Close()
>
> ? "file.Size()", new file().size(cFile)
> ?
> dir (cFile)
> ?
> ? "findFileSize()", findFileSize(cFile)
> return
>
>
> function findFileSize(cFile)
> // code by Ivar B. Jessen,
> // dbase.deutsch 31.12.2004
> local nSize
> nSize = new file().size(cFile)
> return iif(nSize < 0, 0xFFFFFFFF + nSize + 1, nSize)
>
>
   

Copyright © 2006 newsgroups-index   -   All rights reserved   -   Impressum