В Share.pas функция ReadBool() недостаточно хорошо работает. Я бы предпочел что-то типа такого:
Result := ((Data.Data_type = data_real) and (Data.rdata <> 0)) or
((Data.Data_type = data_str) and (Data.sdata <> '') and (Data.sdata <> '0')) or
((Data.Data_type <> data_null) and (Data.idata <> 0)); // Или сузить: ((Data.Data_type = data_int) and (Data.idata <> 0))