пятница, 13 января 2017 г.

О клинических идиотах

Есть библиотека Lcd (для HD44780-совместимых дисплеев). И есть в ней функции вида:

procedure Lcd_Out(row: byte; column: byte; var text: string);

Обращаем внимание: длина строкового типа объявлена неявно, т.е. по умолчанию. Формально, по парадигме языка Pascal, строковый тип имеет длину до 255 символов. Далее ищем и находим библиотеку строковых функций. Ищем в ней определение длины строки:

function strlen(var s : string) : word;

Т.е. результат возвращается в переменной размера 64К. Так-так-так, уже становится интересно... Уточняем свою ужасную догадку на форуме саппорта... И получаем ответ:

Max length of string depends on the RAM memory of MCU

Всё. Занавес. Эффект применительно к Lcd состоит в том, что строку штатными средствами выводить НЕЛЬЗЯ ни в какой программе длиннее учебного примера из хелпа, иначе гарантированы глюки с использованием ОЗУ. А казалось бы, включи разработчики здравый смысл и ограничь строку 40 символами – и все было бы хорошо.

Поэтому-то народ и ненавидит mikroPascal тихой ненавистью... А как его можно любить, если он мало того, что раздутый код генерит (полбеды при размерах ROM современных МК), так еще и подобные «пасхалки» в библиотеках содержит?


Комментариев нет:

Отправить комментарий

Ваш комментарий откроется после проверки и подтверждения.
Благодарю за понимание необходимости проверки!