|
|
 | | 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) > >
|
|
|