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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2008, 10:35   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
Вопрос считывание констант

День добрый, коллеги!). Мне нужна программа, которая бы делала следующее: на форме есть Edit. Туда вводится какая то функция, например, ax+bx+dc. Здесь a,b,d-константы. Мне надо, чтобы по нажатию кнопки, эти константы считывались и заносились, например, в таблицу. Как написать процедуру этого самого считывания констант? может кто то делал пободную процедуру? буду благодарен за помощь.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.10.2008, 10:57   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Компонент CalcExpress тебе в помощь
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.10.2008, 11:24   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
Компонент CalcExpress тебе в помощь
И что это за компонент? Где он находится? Как им пользоваться? Только не надо писать заумные фразы типа "читай справку". Я за помощью обратился сюда.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.10.2008, 12:06   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

CalcExpress - это интерпретатор для вычисления как простых, так и сложных математических выражений. Поддерживает 5 операций, скобки, 18 математических функций и определение пользовательских переменных.

Скачать можно здесь.
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.10.2008, 12:27   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

А другими способами нельзя сделать это?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.10.2008, 12:47   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Туда вводится какая то функция, например, ax+bx+dc. Здесь a,b,d-константы.
Извлечь необходимые данные из строки не проблема, только нужно точно знать как устроена строка. Думаю приведеный пример не отражает все возможные случаи. Если вопрос еще актуален, немного расширьте условие.
Конкрктно по этому примеру
s:=Edit1.text;
j:=0;
for i:=1 to length(s) do
if (i=1) or (s[i-1]='+') then
begin
inc(j);
StringGrid1.Cells[j-1,0]:=s[i];
end;

Последний раз редактировалось puporev; 14.10.2008 в 12:53.
puporev вне форума Ответить с цитированием
Старый 14.10.2008, 13:05   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Не получится так строку анализировать.
А если в строке написано
222.125555555555/sin(x+y)/5.9999999999999999999999?

Уж, лучше так..
Код:
var args: array[0..10] of extended;
x: extended;
const
a: Extended = 10;
b: Extended = 20;
d: Extended = 30;
begin
  x:=5;
  //Можно поставить сразу в свойствах
  CalcExpress1.Variables.Add('a');
  CalcExpress1.Variables.Add('b');
  CalcExpress1.Variables.Add('d');
  CalcExpress1.Variables.Add('x');
  args[0] := a;
  args[1] := b;
  args[2] := d;
  args[3] := x;
  //Знак умножения придется ставить
  CalcExpress1.Formula := 'a*x+b*x+d*x';
  ShowMessage(FloatToStr(CalcExpress1.calc(args)));
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.10.2008, 13:42   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Я виноват, я не уточнил. Вводимое уравнение всегда будет иметь такой вид, который я написал. То есть будет например либо 2*х1+3*х2+6*х3=const либо 3*х2+6*х3. Не больше трех и не меньше двух. Ничего из тригонометрии не будет никогда.
_SERGEYX_, ваша ссылка не работает. не открывается(
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.10.2008, 13:45   #9
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Проверил. Работает ссылка.
Вот прямая
http://www.softsl.com/myfiles/components/calc.zip
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.10.2008, 14:12   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
Я виноват, я не уточнил. Вводимое уравнение всегда будет иметь такой вид, который я написал. То есть будет например либо 2*х1+3*х2+6*х3=const либо 3*х2+6*х3. Не больше трех и не меньше двух. Ничего из тригонометрии не будет никогда.
а к тому что я написал можете привести пример кода?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
произвольный выбор из констант Arhangel_bes Помощь студентам 11 12.10.2008 22:07
Считывание из Excelя Gladiator Общие вопросы Delphi 0 19.05.2008 21:10
Считывание пароля Terran Общие вопросы Delphi 1 22.03.2008 20:09
Считывание символов AI01 Общие вопросы C/C++ 5 01.03.2008 17:30
Замена констант в RichEdit. Pashekka Компоненты Delphi 1 24.09.2007 09:42