ReadLn акцептует массив символов array [0..something] of Char и использует его в качестве буфера для чтения символов, замыкая цепочку терминирующим нулем. Единственное ограничение: компилятор должен иметь возможность вычисления размера буфера во время компиляции, что делает невозможным объявление переменой типа PChar и ее распределение во время выполнения программы.
Обходной путь:
Type{используем самое большое количество символов в строке, с которым вы можете иметь дело}TLine = Array [0..1024] of Char; PLine = ^TLine; VarpBuf: PLine;...New( pBuf ); ...ReadLn( F, pBuf^ ); |
Для передачи pBuf функциям, которым требуется параметр типа Pchar, используйте приведение типа подобно PChar( pBuf ).
Примечание: вы, конечно, можете использовать объявление переменной типа TLine или непосредственно массив символов, но я предпочитаю распределять из кучи нечто большее, чем 4 байта...
[000838]