![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приведение типов. [D7]
ququq © (2007-07-22 20:29:00)Заинтересовал вопрос: можно ли в таком случае передать в процедуру _x значение переменной Integer и как это сделать?
procedure TForm1.Button1Click(Sender: TObject);
type
PxInteger = ^xInteger;
xInteger = type Integer;
var
xInt: xInteger;
Int: Integer;
procedure _x(Val: PxInteger);
begin
ShowMessage(IntToStr(Val^));
end;
begin
xInt := 1;
Int := 2;
_x( Int);
end;
Virgo_Style (2007-07-22 22:15:00) [1]ququq (22.07.07 21:47) [4]
почему, что бы получить уже значение переданное в _x, нужно приводить к Integer, ведь я передаю PxInteger. Мне казалось, что должно было быть ...IntToStr(Integer(Val^)..
Потому что ты передаешь Integer, приведенный к Pointer, а не указатель на Integer, как, наверное, следовало бы по логике функции
ququq (2007-07-22 21:47:00) [2]
> Можно, конечно. Используя то самое приведение типов: _x(PxInteger(Int)).
> Только ведь внутри _x переданный параметр нужно будет рассматривать
> как указатель...
Да, запутался я что-то. Сделал приведением типов. Но теперь не пойму, почему, что бы получить уже значение переданное в _x, нужно приводить к Integer, ведь я передаю PxInteger. Мне казалось, что должно было быть ...IntToStr(Integer(Val^)..
?
procedure _x(Val: PxInteger);
begin
ShowMessage(IntToStr( Integer(Val)));
end;
begin
xInt := 1;
Int := 2;
_x(PxInteger(Int));
end;
begin...end (2007-07-22 21:20:00) [3]Мда. Похоже, мой телепатор своё уже отслужил...
begin...end (2007-07-22 21:18:00) [4]Можно, конечно. Используя то самое приведение типов:
_x(PxInteger(Int)).
Только ведь внутри _x переданный параметр нужно будет рассматривать как указатель...
Однокамушкин (2007-07-22 21:15:00) [5]
_x(PxInteger(@Int)^);