Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как изъять адрес переменной?


Автор: ColdSpirit 30.3.2013, 04:26
Как сделать так, чтобы при передаче в функцию или процедуру переменной, внутри можно было изъять ее адрес?
Есть стандартная функция addr(), она возвращаяет адрес, но ее код я не смог найти.

Автор: 586 30.3.2013, 08:48
Передавай параметр как ссылку или указатель.

Код
procedure test(var value:Integer);       // ссылка
procedure test(pValue:PInteger);         // указатель

Автор: Illusion Dolphin 30.3.2013, 09:49
Адрес можно получить через Addr или @. Код этой функции смотрть надо в дезасемблерре. 

Код


procedure testa(var value:Integer);       // ссылка
begin
  value := 10;
  ShowMessage(IntToStr(NativeInt(Addr(Value))));  //выводим адрес переменной
  ShowMessage(IntToStr(NativeInt(@Value)));  //выводим адрес переменной
end;
procedure testb(pValue:PInteger);         // указатель
begin
  pValue^ := 10;
  ShowMessage(IntToStr(NativeInt(pValue))); //выводим адрес переменной
end;

procedure TForm45.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  //обе функции с точки зрения процессора одинаковы на 100%
  testa(I);
  testb(@I);
end;

Автор: ColdSpirit 30.3.2013, 09:50
586, Про ссылки не знал, мучился с указателями. Спасибо огромное!  smile

Добавлено через 7 минут и 41 секунду
Illusion Dolphin, спасибо! В интернете про ссылки нереально ничего найти, все про указатели говорят.

Добавлено через 10 минут и 8 секунд
Вопрос решен =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)