Как изъять адрес переменной?

 
0
 
Delphi, Kylix & Pascal
ava
ColdSpirit | 30.03.2013, 05:26
Как сделать так, чтобы при передаче в функцию или процедуру переменной, внутри можно было изъять ее адрес?
Есть стандартная функция addr(), она возвращаяет адрес, но ее код я не смог найти.
Kommentare (4)
ava
Krawler | 30.03.2013, 08:20 #
А не проще передать указатель на переменную?
ava
586 | 30.03.2013, 08:48 #
Передавай параметр как ссылку или указатель.

procedure test(var value:Integer);       // ссылка
procedure test(pValue:PInteger);         // указатель
ava
Illusion Dolphin | 30.03.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;
ava
ColdSpirit | 30.03.2013, 09:50 #
586, Про ссылки не знал, мучился с указателями. Спасибо огромное!  smile 
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden