![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что означает данный параметр? [D7, XP]
Новичек © (2005-12-02 09:26:00)Уважаемые Мастера, объясните, пожалуйста, что означает Pointer(nil)^?
Я в недоумении :-(
GuAV (2005-12-02 12:06:00) [1]передача var параметра с т.з. получаемого машинного кода иднетична передачи параметра-указателя.
Это - почти одно и то же:
procedure zzz(var X: Integer);
procedure zzz(X: PInteger);
Однако, во втором случае можно ещё передать nil.
Функции WinAPI объявляют вторым способам, если она может принять nil, иначе обычно первым способом.
Для передачи nil-указателя в var параметре используют Pointer(nil)^ . Заметьте, что разименование фактически не происходит, если оно указано для указателя, переданного var параметру, иначе код давал бы AV перед вызовом подпрограммы.
Reindeer Moss Eater (2005-12-02 11:43:00) [2]Какой же это указатель? Там же разыменование.
Это кусок памяти, расположенный нигде.
Новичек (2005-12-02 11:32:00) [3]А почему бы этот указатель просто не обнулить?
Плохиш (2005-12-02 11:27:00) [4]
> Новичек © (02.12.05 11:13) [4]
> Да, я смотрел. Мне стало интересно, что же все-таки имелось
> в виду
Указатель на несуществующий буффер.
Новичек (2005-12-02 11:13:00) [5]Да, я смотрел. Мне стало интересно, что же все-таки имелось в виду...
icWasya (2005-12-02 10:42:00) [6]Ну а если посмотреть на двадцать строчек выше, то увидите, что если второй параметр равен минус один, то первый не используется.
Новичек (2005-12-02 10:10:00) [7]Это взято из файла ScktComp.pas, поставляемого с исходниками Delphi/
Reindeer Moss Eater (2005-12-02 10:07:00) [8]Означает примерно следующее: "поди туда, не знаю куда, принеси то, не знаю что"
В каком выражении это вообюще используется?