Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2011, 18:59   #1
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
По умолчанию Адрес и размер переменной

Есть четыре переменные типа: byte,word,longint,integer.
Нужно вывести на экран их адрес и размер. Размер я вообще никак не найду, а всё, что пробовал с адресом, меня озадачивает.

Код:
procedure TForm6.Button2Click(Sender: TObject);
begin
x:=5;
p:=@x;
stringgrid1.Cells[0,0]:=inttostr(integer(p^));
end;
Он будет выводи "5". И какое бы цифровое значение я не писал, адрес один и тот же для любых типов. А если пробую отрицательный, он по-моему находит обратный код числа. Как вывести адрес, и как вообще вывести размер? С этим вообще беда какая-то.
Form_13 вне форума Ответить с цитированием
Старый 21.09.2011, 19:13   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Размер переменных и типов узнаётся функцией
Код:
sizeof()
вывести адрес - не надо разыменовывать, т.е. так :
Код:
inttostr(integer(p));
phomm вне форума Ответить с цитированием
Старый 21.09.2011, 19:20   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Можно просто @X, без P:
Код:
Caption := '$' + IntToHex(Cardinal(@X), 8);
P.S. Если Delphi - не говно мамонта, то лучше так:
Код:
Caption := '$' + IntToHex(NativeUInt(@X), SizeOf(Pointer) * 2);
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 21.09.2011, 20:27   #4
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
Есть четыре переменные типа: byte,word,longint,integer.
В приведенном коде нет НИ ОДНОЙ переменной.
Переменная становится оной при ее ОБЪЯВЛЕНИИ, каковое ты привести не удосужился. Не то что "четыре" - ни одного.
mss вне форума Ответить с цитированием
Старый 24.09.2011, 12:29   #5
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
По умолчанию

Каких только складов ума люди не заходят на форум, дорогой профессионал mss.
А остальным большое спасибо, всё получилось.
Form_13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Адрес переменной _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 16 30.12.2010 12:02
Адрес переменной _-Re@l-_ Общие вопросы .NET 3 25.12.2010 16:58
Адрес переменной kostyan777 Общие вопросы C/C++ 4 11.07.2010 22:16
Адрес и размер функции Ivan_32 Общие вопросы C/C++ 3 11.02.2009 19:58
Адрес переменной Pedro Общие вопросы Delphi 11 16.12.2008 13:03