Перейти к содержанию
Fire Monkey от А до Я

Сложное if условие


Рекомендуемые сообщения

Возможно ли вообще такое:

  • создать условие динамически и как ?
  • знак условия && или || подставить как переменную?

Задача какая - выполнить определенное действие - берется из базы, к примеру запустить программу, в зависимости от определенных условий - тоже из базы, к примеру надо проверить значение ветки реестра и наличие файла/каталога , - то есть надо в динамике создать условие типа такого

if (reg->ValueExists("......") переменная условия FileExists(".......") переменная условия ...... )

ну и желательно выполнить .

Или может есть какой то другой вариант выполнения задачи

Заранее благодарен

Ссылка на комментарий
  • 4 месяца спустя...

Условие хранить в переменной НЕВОЗМОЖНО я бы рекомендовал:

1. Формировать строку с условиями, например такую: "1||0&&0".

2. Использовать конечный автомат, который будет анализировать эту строку и возвращать результат в виде 1 или 0.

 

Я могу сделать этот конечный автомат бесплатно. Делать? И язык какой? C++?

Ссылка на комментарий

Функция:

bool BigIf(String Str)
{
while (Str.Length() > 2)
{
if (((Str[1] == '0') || (Str[1] == '1')) && ((Str[3] == '0') || (Str[3] == '1')))
{
if (Str[2] == '|')
{
Str.Insert(((Str[1] == '1') || (Str[3] == '1')) ? 1 : 0,1);
Str.Delete(2,3);
}
else if (Str[2] == '&')
{
Str.Insert(((Str[1] == '1') && (Str[3] == '1')) ? 1 : 0,1);
Str.Delete(2,3);
};
ShowMessage(Str);
}
else
{
// Здесь ошибка, неправильный формат условия
};
};
 
return Str[1] == '1';
};
И примеры использования:
bool Result;
 
Result = BigIf("1&0"); // true && false
Result = BigIf("1|0"); // true || false
Result = BigIf("1&0|1"); // true && false || true
Result = BigIf("1&0|0"); // true && false || false
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...