Readln для более чем 255 символов
|
Построили новый полностью роботизированный завод. Идет экскурсия по цехам. Экскурсовод:
- Внимание, господа, в этом цехе все роботы управаляются операцинной системой MS-DOS.
Посмотрели, идут дальше.
- В этом цехе все роботы работают под управлением операционной системы Unix.
Посмотрели, идут дальше.
- Вот в этом цехе все роботы работают под управлением операционной системы QNX.
Проходят в след. цех.
- А в этом цехе все роботы управляются операционной системой Microsoft Windows'98. Всем присутствующим просьба надеть защитные каски.
|
ReadLn акцептует массив символов array [0..something] of Char и использует
его в качестве буфера для чтения символов, замыкая цепочку терминирующим нулем.
Единственное ограничение: компилятор должен иметь возможность вычисления размера
буфера во время компиляции, что делает невозможным объявление переменой типа
PChar и ее распределение во время выполнения программы.
Обходной путь:
type
{используем самое большое количество символов в
строке, с которым вы можете иметь дело}
TLine = array[0..1024] of Char;
PLine = ^TLine;
var
pBuf: PLine;
...
New(pBuf);
...
ReadLn(F, pBuf^);
|
Для передачи pBuf функциям, которым требуется параметр типа Pchar,
используйте приведение типа подобно PChar( pBuf ).
Примечание: вы, конечно, можете использовать объявление переменной типа TLine
или непосредственно массив символов, но я предпочитаю распределять из кучи нечто
большее, чем 4 байта...
|