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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 21:03   #1
Silverstone
Пользователь
 
Регистрация: 13.12.2011
Сообщений: 75
По умолчанию Пустой Edit. Парсер формулы из Edit

Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TeEngine, Series, ComCtrls, StdCtrls, ExtCtrls, TeeProcs, Chart;
 
type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Chart1: TChart;
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label2: TLabel;
    Edit3: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    StatusBar1: TStatusBar;
    Series1: TLineSeries;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Edit1Click(Sender: TObject);
    procedure Edit2Click(Sender: TObject);
    procedure Edit3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  a,b,e:real;
 
implementation
 function f(x:real):real;
  begin
    Result:=cos(x);
  end;
{$R *.dfm}
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 Edit1.Clear;
 Edit2.Clear;
 Edit3.Clear;
 Memo1.Clear;
 Series1.Clear;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 var
  c,x:real;
  i:integer;
begin
 a:=StrToFloat(Edit1.Text);
 b:=StrToFloat(Edit2.Text);
 e:=StrToFloat(Edit3.Text);
//if Edit3.Text='' then
//  Edit3.Text:='0';
 
 c:=(a+b)/2;
 while abs(b-a)>e do
  begin
    if f(a)*f(c)<0 then
     b:=c else a:=c;
    c:=(a+b)/2;
  end;
  x:=c;
 
   Memo1.Lines.Add('x= '+FloatToStr(x));
   Memo1.Lines.Add('f(x)= '+FloatTostr(f(x)));
 end;
 
 
 
procedure TForm1.Edit1Click(Sender: TObject);
begin
 Edit1.Clear;
end;
 
procedure TForm1.Edit2Click(Sender: TObject);
begin
 Edit2.Clear;
end;
 
procedure TForm1.Edit3Click(Sender: TObject);
begin
 Edit3.Clear;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
 close;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
 var
  xn,xk,dx,y:double;
begin
 xn:=StrToFloat(Edit1.Text);//начало графика
 xk:=StrToFloat(Edit2.Text);
 dx:=0.2;
 while xn<=xk do  //пока не дошли до конца
  begin
   y:=cos(xn); //считаем значение функции
   Series1.AddXY(xn,y,'',clRed); //записываем его ,строим
   xn:=xn+dx;//наращиваем х
  end;
 
end;
 
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 case Key of
   #8,'0'..'9' :  ;
   '.',',':
    begin
     if Key <> DecimalSeparator then
      Key := DecimalSeparator; // заменим разделитель на допустимый
     if Pos(DecimalSeparator,Edit1.Text) <> 0
      then Key := Chr(0); // запрет ввода второго разделителя
    end;
    '-':    // минус можно ввести только первым символом,
     if Length(Edit1.Text) <> 0
      then Key := Chr(0);
     #13:Edit2.Setfocus;
      else
       key := Chr(0);
end;
end;
 
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
 case Key of
   #8,'0'..'9' :  ;
   '.',',':
    begin
     if Key <> DecimalSeparator then
      Key := DecimalSeparator; // заменим разделитель на допустимый
     if Pos(DecimalSeparator,Edit1.Text) <> 0
      then Key := Chr(0); // запрет ввода второго разделителя
    end;
    '-':    // минус можно ввести только первым символом,
     if Length(Edit1.Text) <> 0
      then Key := Chr(0);
     #13:Edit2.Setfocus;
      else
       key := Chr(0);
end;
end;
 
end.
Silverstone вне форума Ответить с цитированием
Старый 15.12.2012, 23:36   #2
Silverstone
Пользователь
 
Регистрация: 13.12.2011
Сообщений: 75
По умолчанию

вопрос решен
Silverstone вне форума Ответить с цитированием
Старый 16.12.2012, 00:01   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А вопрос то о чем был? Просветите
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.12.2012, 03:07   #4
Silverstone
Пользователь
 
Регистрация: 13.12.2011
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А вопрос то о чем был? Просветите
проверка edit'a закоменченного не работала
Silverstone вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отключение формулы в пустой ячейке mssod Microsoft Office Excel 2 05.02.2012 12:27
edit spartan92 Общие вопросы Delphi 10 15.05.2011 15:15
Копирование строки из Edit в другой Edit. Ibanez Wizard Win Api 3 29.03.2011 02:46
Edit Simon..14 Общие вопросы C/C++ 2 27.01.2009 21:25
Edit! Abbatik Помощь студентам 7 25.11.2007 15:39