Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227

RTTI, не могу прочитать атрибуты

25.01.2018, 18:10. Показов 891. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, вот элементарнейшую задачу делаю, а уперся в неизвестную ошибку или глюк.
Пытаюсь просто прочитать атрибуты.
По моему скромному представлению, я должен получить мои атрибуты в memo... А получаю AV


Код...
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
unit uMain;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons,
  System.Rtti;
 
type
  TAttribute = class(TCustomAttribute)
  private
    FName: string;
    FAge: integer;
    constructor Create(AName: string; AAge: integer);
    procedure SetAge(const Value: integer);
    procedure SetName(const Value: string);
  published
    property Name: string read FName write SetName;
    property Age: integer read FAge write SetAge;
  end;
//
 
//  {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
  TSomeClass = class
  public
    [TAttribute('SomeName', 39)]
    procedure someProcedure(const s: string);
    [TAttribute('AnotherName', 37)]
    procedure anotherProcedure(const s: string);
  end;
 
  TMain = class(TForm)
    bStart: TBitBtn;
    Memo: TMemo;
    procedure bStartClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Main: TMain;
 
implementation
 
{$R *.dfm}
 
{ TMyAttribute }
 
constructor TAttribute.Create(AName: string; AAge: integer);
begin
  FName := AName;
  FAge := AAge;
end;
 
procedure TAttribute.SetAge(const Value: integer);
begin
  FAge := Value;
end;
 
procedure TAttribute.SetName(const Value: string);
begin
  FName := Value;
end;
 
{ TSomeClass }
 
procedure TSomeClass.anotherProcedure(const s: string);
begin
//
end;
 
procedure TSomeClass.someProcedure(const s: string);
begin
  //
end;
 
procedure TMain.bStartClick(Sender: TObject);
var
  ctx: TRttiContext;
  t: TRttiType;
  m: TRttiMethod;
  a: TCustomAttribute;
begin
  Memo.Lines.Clear;
  ctx := TRttiContext.Create;
  try
    t := ctx.GetType(TSomeClass);
    for m in t.GetMethods do
    begin
      for a in m.GetAttributes do // << AV вылетает здесь
      begin
        if a is TAttribute then
        begin
          Memo.Lines.Add(m.Name);
         // Memo.Lines.Add(Format('Method = %s; Attribute = %s, Name = %s, Age = %d', [m.Name, a.ClassName, TMyAttribute(a).Name, TMyAttribute(a).Age]));
//          Memo.Lines.Add(m.Name, a.ClassName);
        end;
      end;
    end;
  finally
    ctx.Free;
  end;
end;
 
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2018, 18:10
Ответы с готовыми решениями:

вместо механизма RTTI языка C++ используйте свою собственную модель RTTI
В примере вместо механизма RTTI языка C++ используйте свою собственную модель RTTI. Включите в базовый класс виртуальную функцию whatAmI()...

Как прочитать атрибуты тегов в xml
Здравствуйте. Как прочитать значения атрибутов kod, isgroup, ostatok и др. &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; ...

Как прочитать атрибуты узла в XML?
Подскажите пожалуйста, как правильно прочитать атрибуты узла? XmlDocument doc = new XmlDocument(); doc.Load(xmlFile); ...

1
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
26.01.2018, 09:20  [ТС]
Вот она, запойная разработка. Сдал проект, решил для себя помучить RTTI атрибуты и прописал конструктор в private))
Утром проснулся и понял, что нельзя так много работать)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2018, 09:20
Помогаю со студенческими работами здесь

Атрибуты класса и атрибуты объекта
в чем разница атрибута класса и атрибута объекта? препод задал вопрос : &quot;функция доступа set() присваивает значение атрибуту класса...

Не могу прочитать сообщение
Всем доброго дня! Если пишу не в тему, прошу прощения. Проблема в том, не могу от некоторых пользователей в Google прочитать сообщения....

Не могу прочитать файл
Есть код(листинг 1) Content content = referenceService.getContentById(9); //Выгрузка файла из базы try { ...

Не могу прочитать настройки
Привет! В свойствах проекта, на вкладке Параметры добавил несколько настроек. Но при попытке обратиться к ним в коде...

Не могу прочитать код
Помогите пожалуйста прочитать код.Пробывал через echo понять работу скрипта.Но ничего не вышло.Код создает html файл и запускает этот файл....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru