>  В данном случае как раз возможно...
>  Пример: вызываем функцию с параметром в 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 я встречал эти оговорки
относительно формата строковых данных, их объявлений в ХП и в УДФ-ке.


--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---

Ответить