> В данном случае как раз возможно... > Пример: вызываем функцию с параметром в 80 символов ровно, > вроде как и не противоречит, НО реально там 80 символов + '\0' > и при таком выделении и использовании как в примере ты получишь > ошибку памяти - в лучьшем случае и падение сервера в худшем...
Падение сервера врядли, а вот перекошенные данные - очень лехко;) Ну, сделай 81 символ, а вдрух какой хытрый программер передаст параметром строку в 100 символов... всего ж не предугадаешь. Поставь проверку типо function func(str: PCHAR): PCHAR; begin if strlen(str) >= 80 then Exit; или еще хуже, если результат функции по длине такой же или короче аргумента, то напаривай str2 := malloc(strlen(argstr) + 1); как в принципе и делается (по крайней мере в моих прогах). функция strlen вроде апишная, возвращает длину zero ended строки без учета нуля. А пример на то и пример, чтобы показать общий функционал, он упрощенный дается, чтобы тот, кому пример предназначается, не задумывался над кусочками кода, а видел алгоритму в целом. > По моему этот момент надо оговорить отдельно в данной статье. Не помню точно, но кажися в РТФМ для UDF я встречал эти оговорки относительно формата строковых данных, их объявлений в ХП и в УДФ-ке. --~--~---------~--~----~------------~-------~--~----~ -~----------~----~----~----~------~----~------~--~---

