[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]