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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2010, 15:22   #1
мормончик
 
Регистрация: 23.12.2010
Сообщений: 6
По умолчанию копирование всей tEdit

суть такова: в поле тЕдит вводится какая-нибудь формула, и надо её скопировать всю, чтобы передать в процедуру для подсчета
например 3*exp(5*x*x-2*x)
как реализовать?

отдельно типа StrToFloat (edit1.text) не работает)

Последний раз редактировалось мормончик; 23.12.2010 в 15:25.
мормончик вне форума Ответить с цитированием
Старый 23.12.2010, 16:24   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Э нет! просто так не получится! Кто-то должен понимать, что Вы там написали, и вычислять это выражение (тем более, с импользованием переменных)!

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

примеры можно легко найти поиском. Простой готовый пример можно взять, например, ТУТ.

p.s. кстати, на форуме были и более экзотические варианты:
- дёргать MS Excel через OLE и заставлять вычислять выражение Excel.
- или делать запрос к ядру MS Access (через ADO), вычисляя выражение в SQL запросе...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.12.2010, 16:35   #3
мормончик
 
Регистрация: 23.12.2010
Сообщений: 6
По умолчанию

спасибо, попробую разобраться
мормончик вне форума Ответить с цитированием
Старый 23.12.2010, 17:28   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и надо её скопировать всю
Что-то я не понял зачем копировать всю. и куда копировать?
Если всю нужно передать в некую процедуру то
Код:
Процедура(Edit1.Text);
И пусть она разбирается с выражением.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.01.2011, 18:03   #5
мормончик
 
Регистрация: 23.12.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что-то я не понял зачем копировать всю. и куда копировать?
Если всю нужно передать в некую процедуру то
Код:
Процедура(Edit1.Text);
И пусть она разбирается с выражением.
function Func1( k : real; x : real ) : real;
begin
result := Func2(x, [k+1]) * ( Edit1.Text);
end;

а в Edit1.Text как я писал может быть (2*x+exp(x*x-4)), или х*х, вобщем любое там может быть, руками вбивать надо. не понимаю как сделать(

Последний раз редактировалось мормончик; 10.01.2011 в 18:08.
мормончик вне форума Ответить с цитированием
Старый 10.01.2011, 19:19   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

первый ответ читаем до понимания. и советую сходить по ссылке
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.05.2011, 20:34   #7
мормончик
 
Регистрация: 23.12.2010
Сообщений: 6
По умолчанию

ребят, опять я =(
в общем сделано было так (тупо, но работает):
при вызове процедуры вызывается парсер, который считывает строку, считает что там получилось и дает и ответ, и так скажем миллион раз. если не считывать строку (т.е. сразу заложить данную строку в текст), то прога считает 1 минуту, а когда с парсером - 20 минут. можно ли как-нибудь сделать считывание 1 раз и чтобы запомнилось оно?

1) вариант без парсера
Код:
function PodIntFunc( k : integer; x : extended ) : extended;
begin
   result := FuncFi(x, Mu[k+1]) * exp( - 4 * ( x - 2 ) * ( x - 2 ));
end;
2) с парсером
Код:
procedure asd(x:extended);
begin
   form2.result.text:=FloatToStr(x);   - загоняю текущее значение переменной Х
   form2.edit1.text:=aaa;   - присваваю нужную строку для считывания (строка предварительно присваивается в переменную)
   form2.Button1.Click;        - жму считать
   funс:=StrToFloat(form2.result.text);     - получаю ответ
end;

function PodIntFunc( k : integer; x : extended ) : extended;
begin
  asd(x);
  result := FuncFi(x, Mu[k+1]) *funс;
end;
я читал про какие-то регулярные выражения, но даже прочитав инструкцию в архиве с ними, не понял как работают примеры и не знаю как сделать(((((((

Последний раз редактировалось мормончик; 15.05.2011 в 20:35. Причина: help plz
мормончик вне форума Ответить с цитированием
Старый 16.05.2011, 10:39   #8
мормончик
 
Регистрация: 23.12.2010
Сообщений: 6
По умолчанию

ребят, помогите с рег.выражениями плз
мормончик вне форума Ответить с цитированием
Старый 16.05.2011, 11:05   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

есть такая штука как TRegExp (Ищем в гугле).

Последний раз редактировалось Человек_Борща; 16.05.2011 в 11:09.
Человек_Борща вне форума Ответить с цитированием
Старый 16.05.2011, 11:19   #10
мормончик
 
Регистрация: 23.12.2010
Сообщений: 6
По умолчанию

так я же написал, что не понял как они работают, я скачал архив с сайта, посмотрел примеры, посмотрел хелп, но не понял =(
мормончик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемы с печатью всей формы в делфи Izlom Помощь студентам 2 05.09.2010 18:48
Сохранение всей структуры массива в строку J-Max PHP 5 05.09.2010 18:00
Печать всей формы GINA Общие вопросы Delphi 11 11.01.2009 21:11