|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Delphi7: GetPropList
Уважаемые, имею траблы с GetPropList. Функция честно возвращает список
property, но когда property имеет тип record, то функция не включает её в возвращаемый список. Код:
program enumerator; {$APPTYPE CONSOLE} uses TypInfo, Classes, SysUtils; type tRec = record x,y : Single; end ; tBaseClass = class ( TPersistent ) end ; tChild = class( tBaseClass ) private Fbeta: Boolean; Falpha: string; Flazha: tRec; published property alpha : string read Falpha write Falpha; property beta : Boolean read Fbeta write Fbeta; property lazha : tRec read Flazha write Flazha; end ; var List: PPropList; Count, i : integer; begin with tChild.Create do begin GetMem(List, 3); Count := GetPropList(ClassInfo, tkAny, List); for i := 0 to count -1 do with List[ I ]^ do writeln( format( '%s %s (%s)', [ Name, PropType^.Name, getenumname( typeinfo(TTypeKind ), Integer(PropType^.Kind ) ) ] ) ); FreeMem( List ); Free; end; Readln; end. Вывод: Код:
alpha String (tkLString) beta Boolean (tkEnumeration) Можно ли с этим как нибудь побороться? Последний раз редактировалось front242, 14.12.2012 в 06:39. |
#2
|
|||
|
|||
спасибо за помощь, нашел самостоятельно вот этот хак
http://alex.ciobanu.org/?p=55 |
#3
|
||||
|
||||
Цитата:
|
#4
|
|||
|
|||
Цитата:
Возможно, будет работать другой "хак". Просто модуль, в котором описана запись, надо скомпилить с поддержкой RTTI ({$M+}, если не ошибаюсь). |
#5
|
|||
|
|||
да. к сожалению в 7 это не работает. вопрос остаётся открытым. {$M+} тоже не помогает, видимо потому что TPersistent в Classes уже объявлен режиме $M+
Последний раз редактировалось front242, 16.12.2012 в 20:45. |
#6
|
||||
|
||||
Цитата:
|
#7
|
||||
|
||||
Цитата:
|
#8
|
||||
|
||||
Цитата:
|