Re: EOF?
On 18/9/00 4:45 pm, James Parker [EMAIL PROTECTED] wrote: I'm reading a binary file a character at a time and looking for the end-of-file marker so I know when to stop reading but the read terminates before the entire file is read. There seems to be an eof marker in the file that is not at the end of the file. CharToNum(EOF) returns a 4 which could appear at places other than the end of the file, right? Is the following correct? repeat forever read from file sourcefile for 1 character if the result is "eof" then exit repeat put it into var1 end repeat I'm not quite sure why you want to do this, why not: read from file tSourceFile until eof If you really do want to read char by char for some reason, you need to alter line 3 above to be: if it is eof then exit repeat Eof is a constant so can't be put in quotes. Note that reading and writing to files is (except in a few special cases) generally easiest done with the URL commands. E.g.: put url ("binfile:"tSourceFile) into tVariable Regards, Kevin Thanks, Jim Parker Kevin Miller [EMAIL PROTECTED] http://www.runrev.com/ Runtime Revolution Limited (formerly Cross Worlds Computing). Tel: +44 (0)131 672 2909. Fax: +44 (0)1639 830 707. Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list.
Re: EOF?
On 18/9/00 4:45 pm, James Parker [EMAIL PROTECTED] wrote: I'm reading a binary file a character at a time and looking for the end-of-file marker so I know when to stop reading but the read terminates before the entire file is read. There seems to be an eof marker in the file that is not at the end of the file. CharToNum(EOF) returns a 4 which could appear at places other than the end of the file, right? Is the following correct? repeat forever read from file sourcefile for 1 character if the result is "eof" then exit repeat put it into var1 end repeat I'm not quite sure why you want to do this, why not: read from file tSourceFile until eof Thanks for your prompt reply, Kevin. This is how I started reading files but discovered that when I read large files this way it hangs the MetaCard application. If you really do want to read char by char for some reason, you need to alter line 3 above to be: if it is eof then exit repeat Eof is a constant so can't be put in quotes. The reason I did it this way is that the MetaCard documentation for result says 'Returns a string describing the status of the last find, go, open, send, or file operation command.' and for read it says that 'The result will be set to the string eof when an end-of-file was encountered during the read, or to an error message if some other error occured. An empty result indicates a successful read.' Note that reading and writing to files is (except in a few special cases) generally easiest done with the URL commands. E.g.: put url ("binfile:"tSourceFile) into tVariable Let me give this a try and see what happens. Regards, Kevin Thanks, Jim Parker Kevin Miller [EMAIL PROTECTED] http://www.runrev.com/ Runtime Revolution Limited (formerly Cross Worlds Computing). Tel: +44 (0)131 672 2909. Fax: +44 (0)1639 830 707. Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list. Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list.
Re: EOF?
On Mon, 18 Sep 2000, James Parker wrote: On 18/9/00 4:45 pm, James Parker [EMAIL PROTECTED] wrote: I'm reading a binary file a character at a time and looking for the end-of-file marker so I know when to stop reading but the read terminates before the entire file is read. There seems to be an eof marker in the file that is not at the end of the file. CharToNum(EOF) returns a 4 which could appear at places other than the end of the file, right? Is the following correct? repeat forever read from file sourcefile for 1 character if the result is "eof" then exit repeat put it into var1 end repeat I'm not quite sure why you want to do this, why not: read from file tSourceFile until eof Thanks for your prompt reply, Kevin. This is how I started reading files but discovered that when I read large files this way it hangs the MetaCard application. How large were the files, and on what platform? You should be able to read just about anything on a Win32 or UNIX systems, but reading files larger than a few MB on a Mac is probably not a good idea unless you have a large amount of RAM. If you really do want to read char by char for some reason, you need to alter line 3 above to be: if it is eof then exit repeat Eof is a constant so can't be put in quotes. The reason I did it this way is that the MetaCard documentation for result says 'Returns a string describing the status of the last find, go, open, send, or file operation command.' and for read it says that 'The result will be set to the string eof when an end-of-file was encountered during the read, or to an error message if some other error occured. An empty result indicates a successful read.' You did the right thing. When you don't want to put EOF in quotes is when you're passing it to the read command (e.g., "read from file x until eof"). Note that reading and writing to files is (except in a few special cases) generally easiest done with the URL commands. E.g.: put url ("binfile:"tSourceFile) into tVariable Let me give this a try and see what happens. This is functionally equivalent to "read until eof", it just saves a couple of lines of script for opening and closing the file. Same restrictions apply to the hardware/OS, though: You should only do this if you're sure that there's enough virtual memory available on the target system. Regards, Scott Regards, Kevin Thanks, Jim Parker Kevin Miller [EMAIL PROTECTED] http://www.runrev.com/ Runtime Revolution Limited (formerly Cross Worlds Computing). Tel: +44 (0)131 672 2909. Fax: +44 (0)1639 830 707. Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list. Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list. Scott Raney [EMAIL PROTECTED] http://www.metacard.com MetaCard: You know, there's an easier way to do that... Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list.
Re: EOF?
On 9/19/00 2:51 AM, Scott Raney wrote: On Mon, 18 Sep 2000, James Parker wrote: On 18/9/00 4:45 pm, James Parker [EMAIL PROTECTED] wrote: I'm reading a binary file a character at a time and looking for the end-of-file marker so I know when to stop reading but the read terminates before the entire file is read. There seems to be an eof marker in the file that is not at the end of the file. CharToNum(EOF) returns a 4 which could appear at places other than the end of the file, right? Is the following correct? repeat forever read from file sourcefile for 1 character if the result is "eof" then exit repeat put it into var1 end repeat I'm not quite sure why you want to do this, why not: read from file tSourceFile until eof Thanks for your prompt reply, Kevin. This is how I started reading files but discovered that when I read large files this way it hangs the MetaCard application. How large were the files, and on what platform? You should be able to read just about anything on a Win32 or UNIX systems, but reading files larger than a few MB on a Mac is probably not a good idea unless you have a large amount of RAM. Is this applicable to all MetaCard disk I/O commands on Mac, or just effecting: put url "binfile:thefile.txt" where it really reads the entire file into RAM? If you really do want to read char by char for some reason, you need to alter line 3 above to be: if it is eof then exit repeat Eof is a constant so can't be put in quotes. The reason I did it this way is that the MetaCard documentation for result says 'Returns a string describing the status of the last find, go, open, send, or file operation command.' and for read it says that 'The result will be set to the string eof when an end-of-file was encountered during the read, or to an error message if some other error occured. An empty result indicates a successful read.' You did the right thing. When you don't want to put EOF in quotes is when you're passing it to the read command (e.g., "read from file x until eof"). Note that reading and writing to files is (except in a few special cases) generally easiest done with the URL commands. E.g.: put url ("binfile:"tSourceFile) into tVariable Let me give this a try and see what happens. This is functionally equivalent to "read until eof", it just saves a couple of lines of script for opening and closing the file. Same I must say "put url" has been my favourite command dealing with files. However, I am planning to use the more traditional "open" and "seek" command to deal with large files. My only problem is how find out the current reading/writing position of the file. Thanks. LiangTyan Fui restrictions apply to the hardware/OS, though: You should only do this if you're sure that there's enough virtual memory available on the target system. Regards, Scott Regards, Kevin Thanks, Jim Parker Kevin Miller [EMAIL PROTECTED] http://www.runrev.com/ Runtime Revolution Limited (formerly Cross Worlds Computing). Tel: +44 (0)131 672 2909. Fax: +44 (0)1639 830 707. Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list. Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list. Scott Raney [EMAIL PROTECTED] http://www.metacard.com MetaCard: You know, there's an easier way to do that... Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list. Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list.
Re: EOF?
On 19/9/00 2:42 am, LiangTyan Fui [EMAIL PROTECTED] wrote: Is this applicable to all MetaCard disk I/O commands on Mac, or just effecting: put url "binfile:thefile.txt" where it really reads the entire file into RAM? Only the URL commands. This is functionally equivalent to "read until eof", it just saves a couple of lines of script for opening and closing the file. Same I must say "put url" has been my favourite command dealing with files. However, I am planning to use the more traditional "open" and "seek" command to deal with large files. Right - that is still usually the best way to go for large files. Regards, Kevin My only problem is how find out the current reading/writing position of the file. Thanks. LiangTyan Fui Kevin Miller [EMAIL PROTECTED] http://www.runrev.com/ Runtime Revolution Limited (formerly Cross Worlds Computing). Tel: +44 (0)131 672 2909. Fax: +44 (0)1639 830 707. Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list.
Re: EOF?
On Tue, 19 Sep 2000, LiangTyan Fui wrote: How large were the files, and on what platform? You should be able to read just about anything on a Win32 or UNIX systems, but reading files larger than a few MB on a Mac is probably not a good idea unless you have a large amount of RAM. Is this applicable to all MetaCard disk I/O commands on Mac, or just effecting: put url "binfile:thefile.txt" where it really reads the entire file into RAM? That, and "read ... until eof" both read the whole file into RAM, which means you need to have enough. This is functionally equivalent to "read until eof", it just saves a couple of lines of script for opening and closing the file. Same I must say "put url" has been my favourite command dealing with files. However, I am planning to use the more traditional "open" and "seek" command to deal with large files. My only problem is how find out the current reading/writing position of the file. Yeah, currently you have to keep track of all your reads and seeks because there is no "tell()" function that returns the current file pointer. Scott Thanks. LiangTyan Fui Scott Raney [EMAIL PROTECTED] http://www.metacard.com MetaCard: You know, there's an easier way to do that... Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to [EMAIL PROTECTED], not this list.