Автоматически проверять TEditBox.data в TValue.TypeInfo

У меня есть поле редактирования FMX, и я хочу назначить введенное значение (TEdit.Data) к TValue свойство некоторого объекта. Объект также содержит TypeInfo указатель, который указывает, какого типа должны быть данные, введенные в поле ввода.

   TAttrib = class(TObject)
    public
      property WantedType: PTypeInfo;
      property Value: TValue;
    end;

Я хотел бы добиться того, чтобы я мог назначить введенные данные для TAttrib.Value, а затем проверить правильность введенных данных в соответствии с WantedType следующим образом:

Attrib.Value := TEditbox.Data;
Valid := Attrib.Value.TryCast(Attrib.Wantedtype, lVal) and (not lVal.IsEmpty);

Это не удается, потому что Value всегда имеет тип string, и TryCast не конвертируется из строки в ie, то есть расширяется, даже если введенная строка будет хорошо конвертироваться с помощью ie StrToFloat()

Как я могу сделать это?

1 ответ

Решение

Вы уже нашли TryCast, функция, которая преобразует между типами для TValue, И его поддерживаемые преобразования не включают в себя некоторые необходимые вам преобразования.

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

Другие вопросы по тегам