Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2007, 10:38   #1
Deceased
Пользователь
 
Аватар для Deceased
 
Регистрация: 13.12.2007
Сообщений: 44
По умолчанию как variant из текста преобразовать в булин?

Здравствуйте, товарищи. передо мной стоит проблема в написании программы построения таблицы истинности булевой функции. Проблема состоит в том, что я хочу, чтобы пользователь сам вводил формулу типа "a or b and c", по которой производилось бы вычисление. если в коде переменной присвоить этот текст, то программа работает, а если брать его из, скажем, эдитбокса, то возникает ошибка несоответсвия стрингового и булевого типов данных. помогите пожалуйста, кто что посоветует.

Последний раз редактировалось Deceased; 13.12.2007 в 10:52.
Deceased вне форума Ответить с цитированием
Старый 13.12.2007, 12:27   #2
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

Кинь ка код.
Domovoy вне форума Ответить с цитированием
Старый 13.12.2007, 17:28   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Чтобы не морочиться с разбором строки на переменные и операторы, делаем так:
Вложение 1978
Анализируем ComboBox.ItemIndex и выполняем соответствующий ему булевский оператор для переменных.

Последний раз редактировалось mihali4; 08.11.2008 в 14:04.
mihali4 вне форума Ответить с цитированием
Старый 13.12.2007, 20:20   #4
Deceased
Пользователь
 
Аватар для Deceased
 
Регистрация: 13.12.2007
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Domovoy Посмотреть сообщение
Кинь ка код.
Код:
var a,b,c:boolean;
     i:integer;
     a1,b1,c1,y1:string;
     y:variant;

     begin



 i:=0;
 for a:=false to true do
   for b:=false to true do
     for c:=false to true do
       begin
         if a=false then a1:='0' else a1:='1';
         if b=false then b1:='0' else b1:='1';
         if c=false then c1:='0' else c1:='1';


         y:=a or b and c; // <-это и должно вводиться юзером куданибудь

         if y =false then y1:='0' else y1:='1';

         Form1.sg1.cells[0,i+1]:=a1;
         Form1.sg1.cells[1,i+1]:=b1;
         Form1.sg1.cells[2,i+1]:=c1;
         Form1.sg1.cells[3,i+1]:=y1;
         i:=i+1;
       end;
end;




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

Последний раз редактировалось Deceased; 13.12.2007 в 20:28.
Deceased вне форума Ответить с цитированием
Старый 13.12.2007, 20:51   #5
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

боже... *страшный сон...
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 14.12.2007, 12:52   #6
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

Так просто присвоить и всё не прокатит. Воспользуйся советом mihali4a. Ет лутшее в твоём случае
Domovoy вне форума Ответить с цитированием
Старый 14.12.2007, 19:24   #7
Deceased
Пользователь
 
Аватар для Deceased
 
Регистрация: 13.12.2007
Сообщений: 44
По умолчанию

а я не понял как это сделать (
Deceased вне форума Ответить с цитированием
Старый 16.12.2007, 19:52   #8
Deceased
Пользователь
 
Аватар для Deceased
 
Регистрация: 13.12.2007
Сообщений: 44
По умолчанию

рахобрался с комбобоксами и итем индексами, я просто саму идею не понял сначала. но это же бред, всевозможные варианты прописывать на три переменные. а если у нас их 10 штук будет, там же вариантов будет немеряно...

и попутный вопрос - как там импликация (антиимпликация) задаётся?

Последний раз редактировалось Deceased; 16.12.2007 в 20:05.
Deceased вне форума Ответить с цитированием
Старый 17.12.2007, 13:46   #9
Dimoney
Пользователь
 
Регистрация: 14.12.2007
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Deceased Посмотреть сообщение
рахобрался с комбобоксами и итем индексами, я просто саму идею не понял сначала. но это же бред, всевозможные варианты прописывать на три переменные. а если у нас их 10 штук будет, там же вариантов будет немеряно...

и попутный вопрос - как там импликация (антиимпликация) задаётся?
Ну а по кнопке "добавить" нельзя дорисовывать пару - комбо для всяких "AND/OR" и поле для условия D, E и т.д.? И "собирать" условие для результата? Иначе только прогу каждый раз переписывать...
Dimoney вне форума Ответить с цитированием
Старый 17.12.2007, 22:31   #10
Deceased
Пользователь
 
Аватар для Deceased
 
Регистрация: 13.12.2007
Сообщений: 44
По умолчанию

ага, а если там переменных сто штук, то пол дня сидеть и добавлять.
кстати, вопрос такой. импликации атм кажется нету, следовательно, задаётся она неявно через if ... then. как прописать эту функцию один раз и применять её когда надо а не прописывать неявно каждый раз когда потребуется?
Deceased вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать код SeRhy HTML и CSS 1 17.08.2008 15:50
тип Variant Михаил Юрьевич Общие вопросы Delphi 3 31.01.2008 09:05
преобразовать код С++ в С++.Net Alek86 Общие вопросы .NET 4 01.10.2007 12:00
ПРЕОБРАЗОВАТЬ malevich Общие вопросы Delphi 1 07.12.2006 21:08