Я впервые на этом сайте. Обычно у меня нет проблем с поиском ответов в старых сообщениях, но я не могу решить свою настоящую проблему.
Я хотел бы знать, как использовать функции RTTI, чтобы знать во время работы свойства / элементы записи в Lazarus / FPC? Я знаю, как это сделать для класса (потомок Tpersistent и опубликованные свойства), но не для FPC. В некоторых ссылках указано, как это сделать в Delphi (из D2010), но я не знаю, как перенести это в Lazarus.
Заранее благодарим за помощь и содействие. Салим Лархриб.
Кевину: Как я уже сказал, это мое первое требование. Но я понимаю. Ты прав. Это мой код
procedure TMainForm.btRecordTHashListClick(Sender: TObject);
var
pTData : PTypeData;
pTInfo : PTypeInfo;
TablePtr : PatableRecord;
Loop : Integer;
begin
// Set of Record pointers + HashList
// Create Container
if not Assigned(FTableRecList) then FTableRecList := TFPHashList.Create;
// Insert data
new(TablePtr);
TablePtr^.description := 'Dictionnaire des tables.';
FTableRecList.add('atable', TablePtr );
new(TablePtr);
TablePtr^.description := 'Dictionnaire des fonctions.';
FTableRecList.add('afunction', TablePtr );
new(TablePtr);
TablePtr^.description := 'Dictionnaire des listes d''option.';
FTableRecList.add('alist', TablePtr );
// Read records
for Loop:=0 to FTableRecList.Count-1 do
begin
TablePtr := FTableRecList[Loop];
ShowMessage('Parcours Index : ' + TablePtr^.description);
end;
// Find records
try
TablePtr := FTableRecList.Find('ddafunction');
ShowMessage('Record finded : ' + TablePtr^.description);
except
ShowMessage('Not such record .');
end;
try
TablePtr := FTableRecList.Find('afunction');
ShowMessage('Record finded : ' + TablePtr^.description);
except
ShowMessage('No such record.');
end;
// Free memory : To put later in TFPHashList wrapper
for Loop:=0 to FTableRecList.Count-1 do Dispose(PatableRecord(FTableRecList[Loop]));
// RTTI
pTInfo := TypeInfo(TatableRecord);
pTData := GetTypeData(pTInfo);
ShowMessage('Member count = '+IntToStr(pTData^.PropCount));
end;
site:stackoverflow.com delphi rtti record
, чтобы найти его) - person xmojmr   schedule 06.01.2015