Объявите единицы для преобразования из строковой переменной - PullRequest
0 голосов
/ 05 декабря 2018

Я использую функцию Convert в delphi, чтобы написать простое приложение для нескольких устройств, которое позволит мне преобразовывать измерения.

Форма состоит из 2 комбинированных списков и редактирования.Чтобы выбрать «Преобразование из», «Преобразование в» и значение.

Итак, в моих выпадающих списках я выбираю единицы измерения и передаю значение этих выпадающих списков 2 глобальным строкам

  fromType := cbConvFrom.Selected.Text;
  toType := cbConvTo.Selected.Text;

, которые возвращают следующее.

cbConvFrom returns duCentimeters
cbConvTo returns duMeters

Однако, когда я пытаюсь передать эти значения в функцию Convert, очевидно, что они не работают, поскольку я пытаюсь передать String как TConvType, как показано ниже

conversion := Convert(StrToFloat(editValue.Text), fromType, toType);

Как я могу использовать эти строки в качестве TConvType, поэтому приведенный выше код будет работать правильно.

1 Ответ

0 голосов
/ 05 декабря 2018

Удалите, используя строковое представление типов преобразования, и используйте вместо этого описания.Получить описания от регистрации типа, используя ConvTypeToDescription.Например:

ComboBox1.Items.Add(ConvTypeToDescription(duMeters));
ComboBox1.Items.Add(ConvTypeToDescription(duCentimeters));

Затем вы можете использовать обратный для предоставления функции преобразования.

DescriptionToConvType(ComboBox1.Items[ComboBox1.ItemIndex], fromType);
DescriptionToConvType(ComboBox2.Items[ComboBox2.ItemIndex], toType);
conversion := Convert(StrToFloat(editValue.Text), fromType, toType);
...