Вверх ↑
Ответов: 4631
Рейтинг: 749
#1: 2015-03-31 16:38:08 ЛС | профиль | цитата
По каждой функции идёт описание, как она себя ведет, если ей передать nil или строку 0-вой длины (а это не одно и то же).
Обобщить можно лишь так: если API функция изменяет содержимое переданного ей буфера (в описании многих функций можно встретить предупреждение, что функция изменяет данные в буфере), то в такие функции нельзя передавать:
- PChar(<константа>), Pointer(<константа>)
- PChar(s) с 0-вой длиной строки. Но в зависимости от функции можно передавать Pointer(s), что не исключает предыдущего случая.

Пример:
MessageBox(0, PChar('Text'), PChar(''), 0); // В качестве заголовка пустая строка (адрес строки 0-вой длины, состоящей из одного символа #00)
MessageBox(0, PChar('Text'), nil, 0); // В качестве заголовка 0-вой адрес (нет никакой строки, даже пустой) - система проставит стандартный заголовок

карма: 26

0