home *** CD-ROM | disk | FTP | other *** search
- {
- Duncan Murdoch
-
- >var
- > TextFile: Text;
- > NextChar: Char;
- >...
- >begin
- >...
- > with TextRec(TextFile) do NextChar:= Buffer[BufPos];
-
- Careful! This is unreliable, because the Buffer could be empty. You should
- check that there's something there, and fill it if not.
-
- Here's my NextChar routine. BTW, I don't like the DOS unit's declaration of
- TextRec, so I wrote my own.
- }
-
- type
- IOFunc = function(var Source:text): Integer;
- TTextBuf = array[0..127] of char;
- PTextBuf = ^TTextBuf;
- TextRec = record
- Handle: Word;
- Mode: Word;
- BufSize: Word;
- Private: Word;
- BufPos: Word;
- BufEnd: Word;
- BufPtr: PTextBuf;
- OpenFunc: IOFunc;
- InOutFunc: IOFunc;
- FlushFunc: IOFunc;
- CloseFunc: IOFunc;
- UserData: array[1..16] of Byte;
- Name: array[0..79] of Char;
- Buffer: TTextBuf;
- end;
-
- function NextChar(var Source: text):char;
- begin
- NextChar := chr(0); { This is the default value in case of
- error }
- with TextRec(Source) do
- begin
- if BufPos >= BufEnd then
- { Buffer empty; need to fill it }
- InOutRes := InOutFunc(Source); { This sets the System error
- variable InOutRes; other than
- that, it ignores errors. }
- NextChar := BufPtr^[BufPos] { A test here of whether a
- a character was available
- would be a good idea }
- end;
- end;