Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Указатель на Public переменную в классе

Автор: AlienEmperor 11.05.2006 18:47

Вопрос: есть определенный класс, у него есть св-во (public) Single типа. Можно ли присвоить указателю адрес этого св-ва, а затем менять ? У меня не получается...

Пример:

Код

var P:Pointer;

P:=@Engine.Items[3].X;
Single(P):=0; // Не работает...


Если так нельзя, то может быть есть другой способ ?

Автор: volvo 11.05.2006 19:02

Разыменовать указатель не пробовал? Как ты хочешь Pointer привести к типу Single?

Либо

P:=@Engine.Items[3].X;
Single(P^):=0;

либо (что более вероятно)
P:=@Engine.Items[3].X;
PSingle(P)^ := 0;

Автор: AlienEmperor 11.05.2006 19:09

2Volvo: Спасибо за быстрый ответ! Ты, конечно, прав: надо писать Single(P^):=0 ... Я ошибся когда писал. Но дело было не в этом! Весь глюк был в том, что св-во Х - Double !!! На этом я и "погорел". Сейчас поставил Double(P^):=0 и все работает.

P.S. Честно говоря, не понимаю: есть ли разница между записями:

Код

P:=@Engine.Items[3].X;
Single(P^):=0;


и

Код

P:=@Engine.Items[3].X;
PSingle(P)^ := 0;


??? Если можно, объясни... Я обычно использовал первый вариант и все работало... Может, второй лучше ?