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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2013, 16:14   #1
koxaz941
Пользователь
 
Регистрация: 17.03.2013
Сообщений: 14
По умолчанию Проблема!

Помогите пожалуйста. Проблема в том, что последняя процедура procedure TForm1.Button4Click(Sender: TObject); она отвечает за цикл repeat отказывается работать, мало того, по нажатию кнопки вычислить просто напросто виснет, посмотрите пожалуйста, может где то ошибку допустил.
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var x,cv,ce,a,b:Integer;
z,f,g:Real;
begin
  memo1.clear;
  cv:=StrToInt(edit1.Text);
  ce:=strtoint(edit2.Text);
  for x:=cv to ce do begin

    if (x<a) and (x>b) then
    f:=(x*(5-x))/(x+cos(0.2*x));
    g:=(2+x)/(arctan(0.26*x));
end;
if (x<a) and (x>b) then
      memo1.Lines.add('F= '+floattostr(f))
      else
      memo1.Lines.add('G= '+floattostr(g));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Введите Х');
end;


procedure TForm1.Button3Click(Sender: TObject);
var g,x,cv,ce,f,z,dx,a,b:Real;
begin
dx:=4.5;
memo3.clear;
cv:=StrToInt(edit1.Text);
ce:=strtoint(edit2.Text);
x:=cv;
    while (x>=cv) and (x<=ce) do
    begin
    f:=(x*(5-x))/(x+cos(0.2*x));
    g:=(2+x)/(arctan(0.26*x));
    x:=x+dx;
    z:=a*b-6.2;
    end;
      if (x>a) and (x<b) then
      memo2.Lines.add('F= '+floattostr(f))
      else
      memo2.Lines.Add('G= '+FloatToStr(g));
end;

procedure TForm1.Button4Click(Sender: TObject);
var z,f,x,dx,g,a,b:Real;
begin
dx:=4.5;
memo3.lines.clear;
x:=strtoint(edit2.text);
repeat if (x>a) and (x<b)  then
    f:=(x*(5-x))/(x+cos(0.2*x));
    g:=(2+x)/(arctan(0.26*x));
x:=x+dx until  (x>a) and (x<b);
if (x>a) and (x<b) then
    memo3.lines.add('G= '+FloatToStr(g))
    else
    memo3.lines.add('F= '+floattostr(f));
end;

end.

Последний раз редактировалось Stilet; 03.06.2013 в 16:26.
koxaz941 вне форума Ответить с цитированием
Старый 03.06.2013, 16:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну чтоб не висло можно прописать Application.PeocessMessages в нутро цикла, а насчет залупливания... Тут ИМХО только отладчик поможет.
выход должен делаться когда? Сейчас выход произойдет если х станет больше а и меньше б
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2013, 21:40   #3
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Та-акой код большой просишь просмотреть на наличие ошибок, а название поста дебильное. 500р и исправлю.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неблокирующий сокет Си проблема с закрытием, проблема с закрытием сокетов в цикле mnx_vol C/C++ Сетевое программирование 0 06.11.2012 13:57
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37