Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Aust
0 / 0 / 0
Регистрация: 29.01.2017
Сообщений: 2
1

Значение строковой переменной в качестве имени класса

29.01.2017, 19:15. Просмотров 404. Ответов 3
Метки нет (Все метки)

Добрый день.
Прошу помочь с ответом на вопрос:
Как должна выглядеть запись, чтобы содержание переменной можно было использовать как имя свойства класса, для получения значения этого свойства?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  TChar = class
    Name: String;
    St, Dx, Iq, Ht: Integer;
  end;
 
var
  Form1: TForm1;
  Chars: TDictionary<Integer, TChar>;
  Char: TChar;
  textForCompare: String;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  textForCompare := 'Ht';
 
  Chars := TDictionary<Integer, TChar>.Create;
  Char := TChar.Create;
 
  Char.Name := 'Ivan';
  Char.St := 10;
  Char.Dx := 12;
  Char.Iq := 12;
  Char.Ht := 14;
 
  Chars.Add(1, Char);
 
  ShowMessage(IntToStr(Char.Ht));
  // Отображает значение "14"
  
  ShowMessage(IntToStr(Char.__textForCompare__));
  // Подскажите, как получить хранящееся в Char.Ht значение "14", 
  // используя "Ht" из переменной textForCompare ?
end;
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2017, 19:15
Ответы с готовыми решениями:

Как создать переменную типа int исспользуя в качестве имени значение строковой переменной.
есть переменная типа string в которой допустим хранится значение: &quot;file001&quot; как объявить\создать...

Значение переменной в качестве имени поля
Привет как значение переменной сделать как имя поля??? var myClass = function(){ ...

Переход к метке по имени хранящемуся в строковой переменной
Возможен-ли переход к метке по имени хранящемуся в строковой переменной?

Создание экземпляра класса, имя класса находиться в строковой переменной
Подскажите люди добрые, как можно выйти из такой ситуации, вот допустим имеются классы class new1{...

3
avstantso
73 / 72 / 43
Регистрация: 17.11.2016
Сообщений: 211
29.01.2017, 20:38 2
Не совсем понятен вопрос. Имена свойств определяются на этапе компиляции.

Можно сделать индексное свойство (ArrayProperty) со строковым индексом:
Кликните здесь для просмотра всего текста

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  TForm1 = class(TForm)
  private
    function GetMyProp(const AName: string): Variant;
    procedure SetMyProp(const AName: string; const AValue: Variant);
 
  public
    property MyProp[const AName : string] : Variant  read GetMyProp  write SetMyProp;
  end;
 
function TForm1.GetMyProp(const AName: string): Variant;
begin
  // Читаешь значение по имени в Result
end;
 
procedure TForm1.SetMyProp(const AName: string; const AValue: Variant);
begin
  // Пишешь значение по имени из AValue
end;
Я сделал пример для типа Variant. Ты можешь использовать Integer, string и т.п.
0
Aust
0 / 0 / 0
Регистрация: 29.01.2017
Сообщений: 2
30.01.2017, 04:40  [ТС] 3
Цитата Сообщение от avstantso Посмотреть сообщение
Можно сделать индексное свойство (ArrayProperty) со строковым индексом:
Спасибо, но не совсем понятно, как это использовать.
Вы можете продемонстрировать на примере моего кода?
0
YuryK
1035 / 852 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
30.01.2017, 05:55 4
Delphi
1
2
3
4
5
6
7
8
Char['Name'] := 'Ivan';
Cha['St'] := 10;
Char['Dx'] := 12;
Char['Iq'] := 12;
Char['Ht'] := 14;
 
AttrName := 'Ht';
if Char[AttrName] = 14 then
Добавлено через 6 минут
Цитата Сообщение от avstantso Посмотреть сообщение
property MyProp[const AName : string] : Variant *read GetMyProp *write SetMyProp;
Delphi
1
property MyProp[const AName : string] : Variant *read GetMyProp *write SetMyProp; default;
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2017, 05:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Использовать значение строковой переменной как имя новой переменной
Есть некий объект (ob = ) и строка (st =&quot;name&quot;). Так вот нужно, чтобы name стало именем объекта ob....

Как получить/установить значение переменной по названию (название берется из строковой переменной)
собственно сабж

Содержимое переменной в качестве имени переменной
Подскажите пожалуйста возможно ли использовать содержимое строковой переменной (допустим...

Unicode в качестве имени переменной
Идентификаторы могут записываться с помощью Unicode, \uXXXX, где XXXX - четырёхзначный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.