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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 15:56   #1
StakanpORTvejna
Пользователь
 
Регистрация: 31.08.2007
Сообщений: 37
По умолчанию Чтение функции из строки?

Как сделать чтобы можно было из эдита выделить функцию..Например если мы в эдите написали "x*x+2*(3/5*3) "ну или что-нить подобное,то можно было бы это посчитать..Единственное что пока знаю что можно применить:
Код:
function IsFloat(ch : char; st: string) : Boolean;
begin
   if      (ch >= '0') and (ch <= '9') // цифры
        or (ch = #13)                  // клавиша <Enter>
        or (ch = #8)                    // клавиша <Back Space>
        or (ch='+')
        or (ch='-')
        or (ch='/')
        or (ch='*')
or (ch='(')
or (ch=')')

   then
        begin
          IsFloat := True;  // символ верный
          Exit;            // выход из функции
        end;

   case ch of
      '-': if Length(st) = 0 then IsFloat := True;
      ',': if    ( Pos(',',st) = 0)
             and (st[Length(st)] >= '0')
             and (st[Length(st)] <= '9')
           then // разделитель можно ввести только после цифры
                // и если он еще не введен
                    IsFloat := True;
      else // остальные символы запрещены
           IsFloat := False;
    end;
end;
Вот этот вот код отвечает за проверку вводимых символов..

Последний раз редактировалось StakanpORTvejna; 26.04.2009 в 16:17.
StakanpORTvejna вне форума Ответить с цитированием
Старый 26.04.2009, 16:16   #2
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

Можно применить регулярные выражения

http://regexpstudio.com/
Don't worry be happy
Izhic вне форума Ответить с цитированием
Старый 26.04.2009, 17:44   #3
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Попробуйте следующий алгоритм:
1. { Ввод только цифр и знаков(математ. действия) }:
if not (Key in ['0'..'9', ',', '-', '+', '*', '/']) then Key:= #0;
2.Используйте функцию Ord(Key) в процедуре TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); - перевод символов (Char) в код (byte).
3.Как только появляется знак операции - выполнить арифметическое действие с предыдущим числом и последующимм . Результат вычислений будет "предыдущим " числом.
В принципе это тот же простейший калькулятор.
Во вложении пример.Там коменты подробные, разберитесь - думаю попможет.
Вложения
Тип файла: rar Calculator.rar (10.9 Кб, 14 просмотров)
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 28.04.2009, 16:28   #4
StakanpORTvejna
Пользователь
 
Регистрация: 31.08.2007
Сообщений: 37
По умолчанию

а что-нибудь вида "x*lnx-x^2+3*x-1" чтобы решал?это надо переписать калькулятор или синтаксический анализ читать..но нема времени..может есть у кого что-нибудь?)
StakanpORTvejna вне форума Ответить с цитированием
Старый 28.04.2009, 17:21   #5
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Ну смотря что и как именно надо сделать...

Вообще есть компоненты специальные, но их нужно искать и дополнительно устанавливать...

А можно попробовать и самостоятельно написать...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции. Передача массива в качестве параметра функции. Wia Помощь студентам 2 17.03.2009 14:57
Строки. Как вывести часть строки? Anfall Общие вопросы Delphi 7 26.02.2009 09:10
Чтение строки limon Помощь студентам 3 08.09.2008 14:36
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
Чтение строки... prizrak1390 Общие вопросы Delphi 2 28.02.2008 11:18