====== Максимальная длина строки ====== Забавный случай в FreePascal 3й версии идёт абсолютно классическое поведение строки как в старых версиях Delphi 6 и 7. То-есть длина строки (type String) не может быть длиннее чем 255 байт... Связано это с тем что строка в pascal передается как [1 байт длина][N байт буфер] Что позволяет например получить длину строки с помощью byte(str[0]) и получить Pointer на первый символ через @str[1] .. В Delphi более поздних версий буфер строки составляется из блоков [1 байт длина][N байт буфер][1 байт длина][N байт буфер] То-есть если первый байт будет 255 то он добавляет еще один дополнительный буфер... [6][....] или [255][....][13][......] **Забавное поведение, но иногда создает дикие подводные камни в обработке строк... Из чего выходит что всё-таки используйте TStringstream, TStringBuilder или StrAlloc(N) для строительства заведомо длинных строк...** //fpc 3.0.0 program HelloWorld; var str: String; plen: ^byte; len: byte; begin str := '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789' // 100 + '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789' // 200 + '01234567890123456789012345678901234567890123456789' + (* 250 *) '01234' + (* 255 *) '__AND_THIS_WILL_IGNORED__'; //plen := @str[0]; //len := plen^; len := byte(str[0]); writeln(len, ' ', length(str), ' ', str); // 255 255 .... end.