Contributor: SWAG SUPPORT TEAM 
{
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;
 

AltStyle によって変換されたページ (->オリジナル) /