Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.11.12;
Скачать: CL | DM;

Вниз

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

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

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

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


 
icWasya ©   (2015-12-08 09:24) [1]

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


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


> BYTE* &temp


var temp: PBYTE;


 
Rouse_ ©   (2015-12-08 19:05) [3]

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


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

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


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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2017.11.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.004 c
1-1354822431
Pcrepair
2012-12-06 23:33
2017.11.12
Две версии Функции. что выбрать?


2-1450384249
Max
2015-12-17 23:30
2017.11.12
Сделать в stringgrid строки enabled.Афды


15-1467650458
Pavia
2016-07-04 19:40
2017.11.12
Баг с юникодом


2-1450208244
Alex4445
2015-12-15 22:37
2017.11.12
Синхронизация через SendMessage


2-1450677845
ВладОшин
2015-12-21 09:04
2017.11.12
подскажите обратную формулу