А ведь такие приколы мы уже проходили...
function readProperty(cgt:PCodeGenTools; prop:id_prop):PScData;
....
case cgt.propGetType(prop) of
data_int: Result.SetValue(integer(cgt.propGetValue(prop)^));
data_str: Result.SetValue(string(cgt.propGetValue(prop)^));
data_real: Result.SetValue(real(cgt.propGetValue(prop)^));
data_data: Result^ := DoData(cgt,id_data(cgt.propGetValue(prop)));
data_combo: Result.SetValue(byte(cgt.propGetValue(prop)^));
....