Convert.ToBoolean

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Convert.ToBoolean

Сообщение Al Prad » 04.03.2009 (Ср) 17:50

Доброго дня!

Есть две текстовые переменные. Одна, например, "7" (изменяется автоматически извне), а другая , например, ">10".

Объединяю , получаю строковое значение "7>10". Теперь мне надо узнать истинность полученного выражения.

Пишу
var="7>10";
bool temp= Convert.ToBoolean(var);

Получаю ошибку String was not recognized as a valid Boolean

Какие могут быть варианты определения истинности выражения?

Спасибо.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Convert.ToBoolean

Сообщение ANDLL » 04.03.2009 (Ср) 17:52

А какие именно выражения планируется вычислять? Только те которые содержать знак >?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Convert.ToBoolean

Сообщение Al Prad » 04.03.2009 (Ср) 19:56

ANDLL писал(а):А какие именно выражения планируется вычислять? Только те которые содержать знак >?

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

На картинке я примерно набросал, что я имею. В столбце текущее значение динамически обновляются значения переменных. В столбце Условие аларма я вписываю условия, при которых будет инициироваться сигнал пользователю. Например, когда значение MyFloat2 станет >25. Переменная MyFloat2 изначально с плав. точкой, но поступает в виде строки. И условие аларма вписывается в виде строки ">25".
Аналогично и другие переменные.
Условия могут быть всевозможные (<, >, <=, >=, ==,!=). Сравнивать пока планирую только с константами (не другими переменными). Варианты с MyFloat3 и MyFloat4 пока, вроде, не нужны, хотя и не помешали бы. Но это уже жадность :D

Надеюсь, объяснил понятно. Старался, по крайней мере. :D
tags.JPG
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Al Prad 04.03.2009 (Ср) 20:22, всего редактировалось 2 раз(а).

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Convert.ToBoolean

Сообщение ANDLL » 04.03.2009 (Ср) 20:19

У тебя выражение всегда типа число(знак)число?
Если да, то разбиваешь по regexp'у ([0-9]+)([^0-9]+)([0-9]+)
Потом switch по второй группе, ну и дальше додумай сам
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Convert.ToBoolean

Сообщение Al Prad » 05.03.2009 (Чт) 10:40

Вообще в первый раз слышу про регэкспы :oops:
Придется учиться. Спасибо.

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Convert.ToBoolean

Сообщение FaKk2 » 05.03.2009 (Чт) 20:34

Если тебе надо вычислить более подвинутые конструкции, имеет смысл воспользоваться CodeDom. Для примера см. http://www.csharpcorner.com/UploadFile/ ... lator.aspx
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Convert.ToBoolean

Сообщение Al Prad » 06.03.2009 (Пт) 16:08

Ух ты, круто!
Нет, мне так сложно не надо. Достаточно <, >, <=, >=, ==,!=,==true,==false.
Я уже сделал с помощью .IndexOf и .Replace. Немножко огород нагородился, ну ничего. Просто я думал, что Convert.ToBoolean с этим может справиться. Типа, скормил ему строку "2*2==4", а он выдает true.

Ладно, вопрос можно считать закрытым.
Спасибо.


Вернуться в C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29

    TopList