Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как вывести в showmessage адрес переменной  (Прочитано 8627 раз)
0 Пользователей и 1 Гость смотрят эту тему.
monrus
Опытный

ru
Offline Offline

« : 12-02-2006 08:42 » 

Как вывести в showmessage адрес переменной

типа:
var
i:integer;
begin
ShowMessage(@i);
end;

знаю, что неправильно, а как?
Записан
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #1 : 12-02-2006 09:26 » 

ShowMessage(IntToStr(Integer(@i)));
Хотя безопаснее и удобнее это делать в консоле. Для этого в код файла проекта вставляешь {$APPTYPE CONSOLE}:
Код:
program Project1;
{$APPTYPE CONSOLE}

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
а вместо ShowMessage делаешь Writeln(Integer(@i));
« Последнее редактирование: 19-12-2007 22:16 от Алексей1153++ » Записан
monrus
Опытный

ru
Offline Offline

« Ответ #2 : 12-02-2006 09:56 » 

Спасибо, zubr, за быстрый ответ, а почему безопаснее и удобнее это делать в консоли?

а как в ShowMessage вывести pointer (именно в шестнаднатеричном формате без преобразования)

procedure TForm1.Button1Click(Sender: TObject);
var
i,l:integer;
p:pointer;
begin
i:=123;
l:= Integer(@i);
p:=@i;
ShowMessage((p)); // таким вот типа образом
end;
end.
Записан
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #3 : 12-02-2006 18:20 » 

Цитата
почему безопаснее и удобнее это делать в консоли?
Как я понимаю, тебе ShowMessage надо делать для отладки. Теперь представь момент, что ты ShowMessage вставляешь в событие OnPaint - в лучшем случае будет подвешена программа, а то и Delphi, если запускаешь из Delphi, так как программа ждет пока пользователь нажмет на Ok.
Цитата
как в ShowMessage вывести pointer (именно в шестнаднатеричном формате без преобразования)
Код:
ShowMessage(IntToHex(Integer(p), 8));

« Последнее редактирование: 12-02-2006 18:24 от zubr » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines