Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.02.2015, 11:04
cawendish cawendish вне форума
Прохожий
 
Регистрация: 04.02.2015
Сообщения: 5
Версия Delphi: XE7
Репутация: 10
По умолчанию Есть ли функция, которое выдает имя переменной?

Здравствуйте!
Время от времени мне надо отлаживать delphi программы, т.е. следить за изменениями целого ряда переменных.
Вопрос: как передать в строчную переменную название другой переменной?

Например:

Код:
var

  i   : integer;
  str : string;

begin

  i   :=5;
  str := ИмяПеременной(i) + ' = ' + IntToStr(i);

end.

И чтобы в результате str было равно 'i = 5'
Ответить с цитированием
  #2  
Старый 10.02.2015, 13:17
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

У обычных переменных во время выполнения после компиляции нет имён, следовательно нечего и выдавать. Можно лишь так
Код:
...
type
 TPrm = record
 Name: string;
 i: integer;
end;

...

procedure TForm1.Button1Click(Sender: TObject);
var
 str: TPrm;
begin
 str.Name:= 'i';
 str.i := 5;

 Label1.Caption:= str.Name + ' = ' + IntToStr(str.i);
end;
или использовать массив для однотипок отслеживая значения по индексу

Последний раз редактировалось Alegun, 10.02.2015 в 16:14.
Ответить с цитированием
  #3  
Старый 10.02.2015, 16:29
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

В Items у TStringList храни имена переменных, а в Objects указатели на сами переменные.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 10.02.2015, 17:34
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А может проще использовать для отладки отладочные средства? Watch и т.п. не просто так придумывали.
Код:
str := ИмяПеременной(i) + ' = ' + IntToStr(i);
Конкретно в этом примере имя переменной и так известно, а следовательно, строку можно заменить на
Код:
str := 'i = ' + IntToStr(i);
И я что-то не очень себе представляю ситуацию, когда можно было бы передать гипотетической функции "ИмяПеременной" какую-либо переменную, имеющую имя, и при этом не зная, что это за переменная. Ведь это будет либо прямое обращение к локальной/глобальной переменной (а значит, вместо "ИмяПеременной(val)" можно поставить 'val'), либо к аргументу (в этом случае логичней подставлять имя аргумента), либо к элементу массива (а у них имени-то нет). Единственная возможная ситуация - передача параметра-переменной в функцию (не по значению). Действительно ли она в твоем коде так часто встречается, что требуется такая хитрая функция? Если да, то придется делать примерно как Alegun или NumLock сказали, потому что после компиляции информация о переменных может быть получена разве что из дополнительной отладочной информации (при сборке в дебаг-режиме, конечно).
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 10.02.2015 в 17:43.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:31.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025