As I've mentioned in other posts, fopen/fcreate commands do have 2 GB file size limitaions where they become blind and behave as if eof()=.t., even when it is not.
I've managed to figure out basically equivelent code using File Scripting that does not have this limitation. There is definitely a time penalty vs. fopen/fcreate, but of course, that point is moot when you are trying to pull some info out of a 10 GB ASCII file.
The below code was used to write a 3 GB file, and was also tested vs. an fcreate on a smaller file and yielded identical results.
Tested using VFP 7 and XP Pro.
Brian
fso = CreateObject("Scripting.FileSystemObject"
ExistingFile= fs
penTextFile("USR_2000_OUTPUT.TXT", 1,.f.)
NewFile = fso.CreateTextFile("FS_2000_OUTPUT.TXT", .t.)
DO While ExistingFile.AtEndOfStream=.f.
LcString=ExistingFile.ReadLine()
LcString=SUBSTR(LcString,2,200)+SUBSTR(LcString,202,209) &&preparing here is seems faster than putting in the WriteLine
NewFile.WriteLine(LcString)
ENDDO
ExistingFile.Close
NewFile.Close
I've managed to figure out basically equivelent code using File Scripting that does not have this limitation. There is definitely a time penalty vs. fopen/fcreate, but of course, that point is moot when you are trying to pull some info out of a 10 GB ASCII file.
The below code was used to write a 3 GB file, and was also tested vs. an fcreate on a smaller file and yielded identical results.
Tested using VFP 7 and XP Pro.
Brian
fso = CreateObject("Scripting.FileSystemObject"
ExistingFile= fs
NewFile = fso.CreateTextFile("FS_2000_OUTPUT.TXT", .t.)
DO While ExistingFile.AtEndOfStream=.f.
LcString=ExistingFile.ReadLine()
LcString=SUBSTR(LcString,2,200)+SUBSTR(LcString,202,209) &&preparing here is seems faster than putting in the WriteLine
NewFile.WriteLine(LcString)
ENDDO
ExistingFile.Close
NewFile.Close