[Back to ENTRY SWAG index] [Back to Main SWAG index] [Original]

    {

    Q:  How can I readln() from a file when the lines are longer
    than 255 bytes?

    A:  ReadLn will accept an array [0..something] of Char as
    buffer to put the read characters in and it will make a proper
    zero-terminated char out of them. The only limitation is this:
    the compiler needs to be able to figure out the size of the
    buffer at compile time, which makes the use of a variable
    declared as PChar and allocated at run-time impossible.

    Workaround:
    }

     Type
       {use longest line you may encounter here}
       TLine = Array [0..1024] of Char;

       PLine = ^TLine;

     Var
       pBuf: PLine;
     ...
       New( pBuf );

     ...
       ReadLn( F, pBuf^ );

    To pass pBuf to functions that take a parameter of type Pchar,
    use a typecast like PChar( pBuf ).

    Note:  you can use a variable declared as of type TLine or an
    equivalent array of char directly, of course, but I tend to
    allocate anything larger than 4 bytes on the heap...

[Back to ENTRY SWAG index] [Back to Main SWAG index] [Original]