Советы по Delphi


Readln для более чем 255 символов


Как мне воспользоваться функцией readln(), если файл содержит строки с более чем 255 символами?

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 байта...

[000838]



Содержание раздела