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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2010, 13:57   #1
Pavleg001
Новичок
Джуниор
 
Регистрация: 16.05.2010
Сообщений: 1
По умолчанию Вычисление значения функции, заданной в виде строки

имеется код:

function f(x: double): double;
begin
f:=cos(x);
end;

как заменить значение функции f на текст,вводимый в edit?
пытался так f:=StrToFloatDef(form1.Edit1.Text,c os(x)); не получается так как в edit введено не число, а формула.
Как быть? помоги!























<a href=http://ddl.name/ >download video</a>
Pavleg001 вне форума Ответить с цитированием
Старый 26.05.2010, 14:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Достань компонент TCalc или другой эвалюатор и им рассчитывай формулу в Эдите
Плюс от меня пример эвалюатора на платформе Экзеля:
Код:
unit Unit1;

interface

uses          comobj,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var   sh,wb,XL:OleVariant;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 XL := CreateOleObject('Excel.Application');
 wb:=XL.Workbooks.Add;
 sh:=wb.WorkSheets[1];


end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   xl.quit;
 xl:=Unassigned;
 wb:=Unassigned;
 sh:=Unassigned;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
     sh.range['A1'].formula:='='+Edit1.Text;
     caption:=sh.range['a1'].text;
end;
end;

end.
Может пригодится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.10.2010, 01:37   #3
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Можно еще юзать парсер

Код:
function f(x: string): double;
begin
x := здесь вызвать функцию парсера, что бы получить одно число
f:=cos(x);
end;
RIO вне форума Ответить с цитированием
Старый 01.10.2010, 14:43   #4
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

юзай стеки и очереди
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить значения функции и вывести результаты в виде графика (функцию см.далее) {Please} timepoka Помощь студентам 10 28.02.2010 12:43
вывести на экран в виде таблицы значения функций,заданной графически, на интервале от Хнач до Хкон с шаго Masiasia Помощь студентам 1 25.11.2009 10:06
Вычисление функции заданной в виде разложения в ряд StudeHt Паскаль, Turbo Pascal, PascalABC.NET 2 02.05.2009 20:08
Вычисление функции с заданной точностью. Absent Помощь студентам 1 21.11.2008 13:30