Thanks to Bill Thoen!
That's it, exactly what I was after!
Opening the file for binary input, and then using Get to read one character
at a time has solved my problem.
I found that using Line Input reads only up to the first instance of a CR
character, and thus impossible to test for it's presence. However my text
file has records which may contain 2 or 3 or 4 imbedded CRs before the
ACTUAL end of line.
Hence the need to read one character at a time, its imperative I
differentiate between a single CR, and a CR+LF.
Here's the code just in case anyone's interested:
===============================================================
Sub ReplaceCRwithComma
Dim
s1 as string *1, s2 as string
Define LF Chr$(10) 'Line feed
Define CR Chr$(13) 'Carriage return
Define QT Chr$(34) 'Double quote
Open File "MyInput.TXT" For binary Access Read as #1
Open File "MyOutput.TXT" For output as #2
Do
Get #1,,s1
if eof(1) then
exit do
end if
If s1 = CR then
'Read the next character and test if its a Line Feed.
'If it is, then this is a legitimate end of line.
Get #1,,s1
If s1 = LF then
Print #2, s2
s2 = ""
Else
'Replace the Carriage Return with a comma.
s2 = s2 + "," + s1
end if
Else
s2 = s2 + s1
end if
loop
Close File #1
Close File #2
End Sub
===============================================================
Thanks to everyone else who responded too.
Peter Zyczynski
Insight.GIS
Australia
Ph: (03) 6244-7344
Fax: (03) 6244-7028
[EMAIL PROTECTED]
-----Original Message-----
From: Bill Thoen [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, 23 April 2002 1:09 AM
To: [EMAIL PROTECTED]
Subject: Re: MI-L MBX - text file reading
Open the file as binary and you could read it one character at a
time with
get #1,,c
where #1 is the file handle and c is declared as string*1. Although
this is simple, it's VERY slow. If your files are big, then you
should read in bigger chunks, parsing them for the string
chr$(12)+chr$(10)+"" and assembling the lines that way. When you get
to a spot when the end of the file is too close to read a whole
chunk (e.g. string*255), then revert to the one-char-at-a-time
approach.
--
- Bill Thoen
------------------------------------------------------------
GISnet, 1401 Walnut St., Suite C, Boulder, CO 80302
tel: 303-786-9961, fax: 303-443-4856
mailto:[EMAIL PROTECTED], http://www.gisnet.com
------------------------------------------------------------
Peter Zyczynski wrote:
>
> Hi all,
>
> Can any of you budding programmers out there tell me if its
> possible to read a text file one character at a time, as
> opposed to a whole line at a time?
>
> My text file has occurrences of the carriage return
> character (which doesn't necessarily represent an end of
> line), as well as carriage accompanied by a line feed
> character (these represent end of line)
>
> I need to test for a carriage return with an accompanying
> line feed. MBX thinks that a single CR is end of line - my
> nemesis!
>
> Thanks,
>
> Peter Zyczynski
> Insight.GIS
> Australia
> Ph: (03) 6244-7344
> Fax: (03) 6244-7028
> [EMAIL PROTECTED]
>
---------------------------------------------------------------------
List hosting provided by Directions Magazine | www.directionsmag.com |
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]