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.