Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Корректно ли объявление аргумента как var Param: PByte?


Арлекино ©   (2015-12-08 05:34:00) 

Есть внешняя DLL, написанная на C++
Есть некая функция, один из параметров которой BYTE* &temp
Как нужно объявить переменную при вызове из Delphi?

temp: PByte - получаю Access Violation
var temp: PByte - срабатывает корректно, но кошерна ли такое объявление? возврат на указатель? ведь указатель и есть возврат.
Можно оставить декларацию без var и делать GetMem для переменной, но это ИМХО вообще изврат. Ведь так?


Юрий Зотов   (2015-12-09 15:10:00) [1]

Арлекино ©   (08.12.15 05:34)
> var temp: PByte- кошерна ли такое объявление?


Почему нет?
var temp: byte- кошерно? Вполне.
А почему тогда не кошерно var temp: PByte?

Забудьте о том, что указатель - это какая-то особенная переменная. Никакая не особенная, а самая обыкновенная. Точно такая же, как, например, cardinal - беззнаковое целое число. И содержит указатель точно такое же беззнаковое целое число. Только число это надо рассматривать, как адрес - вот и вся разница.

var temp: byte- передали одно ЧИСЛО, получили другое ЧИСЛО.

var temp: PByte- передали один АДРЕС, получили другой АДРЕС.


Rouse_   (2015-12-08 19:05:00) [2]

Это либо var tmp: PByte, либо tmp: PPByte (tmp: ^PByte)


Игорь Шевченко   (2015-12-08 12:25:00) [3]


> BYTE* &temp


var temp: PBYTE;


icWasya   (2015-12-08 09:24:00) [4]

Объявление корректно. А далее надо читать доку по этой DLL-ке.
И если она возвращает указатель на какой-нибудь массив, не вздумайте делать FreeMem !


Наверх

Титульная страница Поиск, карта сайта Написать письмо