leuce Posted March 29, 2021 Share Posted March 29, 2021 Hello everyone Is the result I'm getting, normal? Here's my code: $tbxfileopen = FileOpen ("IATE_export_29082018.tbx", 16) ; a 2 GB text file $testfileopen0 = FileOpen ("test0.txt", 17) $testfileopen1 = FileOpen ("test1.txt", 17) $tbxfileread0 = FileRead ($tbxfileopen, 1000000) $tbxfileread1 = FileRead ($tbxfileopen, 1000000) FileWrite ($testfileopen0, $tbxfileread0) FileWrite ($testfileopen1, $tbxfileread1) I would have expected "test0.txt" and "test1.txt" to have the same content, but what I find is that "test1.txt" starts where "test0.txt" ends, despite the fact that the "FileRead" is being read into two separate variables. Is this supposed to happen like that? Why? And, how can I avoid that... (except by using "FileOpen" twice). I mean, surely FileRead always reads from the start of the file, so for each new FileRead instance, wouldn't it have to start from the start of the file again? Thanks Samuel Link to comment Share on other sites More sharing options...
Zedna Posted March 29, 2021 Share Posted March 29, 2021 (edited) Yes, it's OK. Every FileRead() moves internal "current file position" for that opened file handle. Use FileSetPos() to move position to 0 before second FileRead() to achieve reading from the begin of file. $tbxfileread0 = FileRead ($tbxfileopen, 1000000) FileSetPos($tbxfileopen, 0, $FILE_BEGIN) $tbxfileread1 = FileRead ($tbxfileopen, 1000000) Look here https://www.autoitscript.com/autoit3/docs/functions/FileSetPos.htm Edited March 29, 2021 by Zedna Resources UDF ResourcesEx UDF AutoIt Forum Search Link to comment Share on other sites More sharing options...
leuce Posted March 29, 2021 Author Share Posted March 29, 2021 (edited) Thanks. Edited March 29, 2021 by leuce Link to comment Share on other sites More sharing options...
JockoDundee Posted March 29, 2021 Share Posted March 29, 2021 2 hours ago, leuce said: despite the fact that the "FileRead" is being read into two separate variables. FileRead has no idea what variables, if even any, it’s return value may be going in to. Therefore it can’t make decisions based on such. Code hard, but don’t hard code... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now