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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2010, 17:14   #1
djdron
Пользователь
 
Регистрация: 13.11.2008
Сообщений: 12
По умолчанию Delphi Ошибка кода (Исходник прикрепил)

Я новичек в программировании помогите найти ошибку в коде :
Проект состоит из 2х форм.
Первая :
Код:
unit Lab3_Trush_Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls, Buttons;
       function f(x,a:real):real;
type
  TLab3_Trush__Form1 = class(TForm)
    Label0: TLabel;
    Image1: TImage;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    BitBtn1: TBitBtn;
    Edit4: TEdit;
    Label4: TLabel;
    Edit3: TEdit;
    procedure Edit1Exit(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Edit3Exit(Sender: TObject);
    procedure Edit4Exit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Lab3_Trush__Form1: TLab3_Trush__Form1;

implementation

uses Unit1, Lab3_Trush_Unit2;

{$R *.dfm}
  function f(x,a:real):real;
// Îá÷èñëåííÿ çíà÷åííÿ ôóíêö³¿.
begin
  if x <= 0 Then
     f:= sin(sqr(x) + a*x)
  else if x<=a then
    f:=cos(a*x+0.4)/sin(a*x+0.4)
  else
    f:=ln(2*x+0.5*a);
   end;
procedure TLab3_Trush__Form1.Button1Click(Sender: TObject);
// Îáðîáëþâà÷ ïî䳿 ÙÈÃËÈÊ íà êíîïö³ Button1 
// (ïîêàçàòè/ñõîâàòè òàáëèöþ). Ïåðåâ³ðÿºìî, ÷è óñå
// çàïîâíåíî. ² ÿêùî âñå ÎÊ - ïîêàçóºìî/õîâàºìî ôîðìó 2.


begin
   If  (Edit1.Text='') Then
    Begin
      ShowMessage('³äñóòíº çíà÷åííÿ À');
      Edit1.SetFocus;
    End
  Else If (Edit2.Text='') Then
    Begin
      ShowMessage('³äñóòíº ïî÷àòêîâå çíà÷åííÿ Õ');
      Edit2.SetFocus;
    End
  Else If  (Edit3.Text='') Then
    Begin
      ShowMessage('³äñóòíº ê³íöåâå çíà÷åííÿ Õ');
      Edit3.SetFocus;
    End
  Else If  (Edit4.Text='') Then
    Begin
      ShowMessage('³äñóòí³é êðîê H');
      Edit4.SetFocus;
    End
  Else if (StrToFloat(Edit3.Text))<=
          (StrToFloat(Edit2.Text)) Then
    Begin
       ShowMessage('Ïî÷àòêîâå çíà÷åííÿ X ïîâèííå áóòè' +
                   ' ìåíøèì â³ä ê³íöåâîãî!');
       Edit3.SetFocus;
    End;
  Else
    Lab3_Trush__Form2.Visible:= not Lab3_Trush__Form2.Visible

       end;



end;

procedure TLab3_Trush__Form1.Edit1Exit(Sender: TObject);
// Îáðîáêà ïî䳿 Âèõ³ä ç îäíîðÿäêîâîãî ðåäàêòîðà 
// äëÿ ââåäåííÿ À (óòðàòà ôîêóñà). Ïåðåâ³ðÿºìî, ùî ìè ââåëè.
// ßêùî óâåäåíî íåïðèïóñòèìå çíà÷åííÿ, (ÿêå íå ìîæíà 
// ïåðåòâîðèòè äî ÷èñëîâîãî âèäó) - âèâîäèìî ïîâ³äîìëåííÿ 
// ïðî ïîìèëêó. Ôîêóñ ïîâåðòàºìî â ðåäàêòîð Edit1. (òîáòî 
// ó ïîëå ââåäåííÿ À).

begin
       if Edit1.Text<>'' then
   try
      StrToFloat(Edit1.Text);
   except
      ShowMessage('Óâåäåíî íåâ³ðíå çíà÷åííÿ À');
      Edit1.SetFocus;
      end;

end;

procedure TLab3_Trush__Form1.Edit2Exit(Sender: TObject);
// Îáðîáêà ïî䳿 Âèõ³ä ç îäíîðÿäêîâîãî ðåäàêòîðà 
// äëÿ ââåäåííÿ Õ (óòðàòà ôîêóñà). Ïåðåâ³ðÿºìî, ùî ìè ââåëè.
// ßêùî óâåäåíî íåïðèïóñòèìå çíà÷åííÿ, (ÿêå íå ìîæíà 
// ïåðåòâîðèòè äî ÷èñëîâîãî âèäó) - âèâîäèìî ïîâ³äîìëåííÿ
// ïðî ïîìèëêó. Ôîêóñ ïîâåðòàºìî â ðåäàêòîð Edit2. (òîáòî
// ó ïîëå ââåäåííÿ Õ).

begin
    if Edit2.Text<>'' then
   try
      StrToFloat(Edit2.Text);
   except
      ShowMessage('Óâåäåíî íåâ³ðíå íà÷àëüíå çíà÷åííÿ Õ');
      Edit2.SetFocus;

   end;

   end;

procedure TLab3_Trush__Form1.Edit3Exit(Sender: TObject);
begin
       if Edit3.Text<>'' then
   try
      StrToFloat(Edit3.Text);
   except
      ShowMessage('Óâåäåíî íåâ³ðíå ê³íå÷íå çíà÷åííÿ Õ');
      Edit3.SetFocus;
      end;
end;

procedure TLab3_Trush__Form1.Edit4Exit(Sender: TObject);
begin
       if Edit4.Text<>'' then
   try
      StrToFloat(Edit4.Text);
   except
      ShowMessage('Ââåäåí íåâåðíûé øàã À');
      Edit4.SetFocus;
      end;
end;

end.

Вторая часть программы в следующем посте!


Программа не запускается на выполнение, выдаёт данные ошибки :

Код:
[Warning] Lab3_Trush_Unit2.pas(86): Variable 'Xmax' might not have been initialized
[Warning] Lab3_Trush_Unit2.pas(89): Variable 'Xmin' might not have been initialized
[Error] Lab3_Trush_Unit2.pas(93): '.' expected but ';' found
[Fatal Error] Lab3_Trush_Unit1.pas(40): Could not compile used unit 'Lab3_Trush_Unit2.pas'

P.S. И подскажите как записать данную формулу в Delphi :
Вложения
Тип файла: rar Lab3.rar (463.8 Кб, 7 просмотров)
djdron вне форума Ответить с цитированием
Старый 03.11.2010, 17:15   #2
djdron
Пользователь
 
Регистрация: 13.11.2008
Сообщений: 12
По умолчанию

И вторая :

Код:
unit Lab3_Trush_Unit2;

interface


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


type
  TLab3_Trush__Form2 = class(TForm)
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Lab3_Trush__Form2: TLab3_Trush__Form2;
      
implementation

uses Lab3_Trush_Unit1;

{$R *.dfm}

procedure TLab3_Trush__Form2.FormShow(Sender: TObject);
// Ïðîöåäóðà îáðîáêè ïî䳿 Ïîêàç ôîðìè.
// Çä³éñíþºòüñÿ ðîçðàõóíîê òàáëèö³ çíà÷åíü ôóíêö³¿ ³ 
// çàïîâíåííÿ êîìïîíåíòà-òàáëèö³.
var
  H,Xn,Xk,A,X,Y,Ymax,Ymin,Xmax,Xmin:Real;
Var s,s1:string;

begin
 // Ôîðìóºìî çàãîëîâîê òàáëèö³.
   StringGrid1.Cells[0,0]:='        Õ';
   StringGrid1.Cells[1,0]:='       f(X)';
// Òîâùèíà ðîçìåæóâàëüíèõ ë³í³é.
// (ìîæíà áóëî óñòàíîâèòè íà åòàï³ ïðîåêòóâàííÿ).
   StringGrid1.GridLineWidth:=2;
// ʳëüê³ñòü ðÿäê³â óñòàíîâëþºìî 2, ïîò³ì ï³ñëÿ 
// äîäàâàííÿ êîæíîãî ðÿäêà áóäåìî íàðîùóâàòè ïî 1. 
// Ó ï³äñóìêó îäåðæèìî íà îäèí ðÿäîê á³ëüøå.
   StringGrid1.RowCount:=2;
// Ïåðåíîñèìî ïàðàìåòðè ç ôîðìè â ðîáî÷³ çì³íí³.
   A:=StrToFloat(Lab3_Trush__Form1.Edit1.Text);
   Xn:=StrToFloat(Lab3_Trush__Form1.Edit2.Text);
   Xk:=StrToFloat(Lab3_Trush__Form1.Edit3.Text);
   H:=StrToFloat(Lab3_Trush__Form1.Edit4.Text);
// ïðèñâîþºìî ïî÷àòêîâ³ çíà÷åííÿ äëÿ öèêëó.
   X:=Xn;Ymax:=-MaxLong;Ymin:=MaxLong;
// Îðãàí³çóºìî öèêë.
// Ó öèêë³ îá÷èñëþºìî çíà÷åííÿ ôóíêö³¿ â ÷åðãîâ³é òî÷ö³.
// Óòî÷íþºìî ìàõ ³ min. Çàíîñèìî äàí³ â òàáëèöþ ³
// çá³ëüøóºìî ë³÷èëüíèê ðÿäê³â.
   While X<=Xk Do
   Begin
      Y:=f(X,A);
      If Y>Ymax Then Begin Ymax:=Y;Xmax:=X; End;
      If Y<Ymin Then Begin Ymin:=Y;Xmin:=X; End;
// Çàíîñèìî ÷åðãîâèé ðÿäîê ó òàáëèöþ.
// Äëÿ ïåðåòâîðåííÿ ä³éñíèõ äàíèõ ó ðÿäîê
// âèêîðèñòîâóºìî óáóäîâàíó ïðîöåäóðó STR(w,d,s).
//    w - çàãàëüíà ê³ëüê³ñòü çíàê³â.
//    d - ê³ëüê³ñòü çíàê³â ó äðîáîâ³é ÷àñòèí³.
//    s - ðåçóëüòàò ïåðåòâîðåííÿ.
      Str(X:6:2,s);
      StringGrid1.Cells[0,StringGrid1.RowCount-1]:=s;
      Str(y:10:4,s);
      StringGrid1.Cells[1,StringGrid1.RowCount-1]:=s;
      StringGrid1.RowCount:=StringGrid1.RowCount+1;
      X:=X+H;
   End;
// ϳñëÿ çàê³í÷åííÿ öèêëó çíèùóºìî çàéâèé ðÿäîê.
   StringGrid1.RowCount:=StringGrid1.RowCount-1;
// Âèâîäèìî çíà÷åííÿ ìàõ ³ min.
   Str(Ymax:0:4,s);
   Str(Xmax:0:3,s1);
   Edit1.Text:='Y='+s+'  ïðè '+'X='+s1;
   Str(Ymin:0:4,s);
   Str(Xmin:0:3,s1);
   Edit2.Text:='Y='+s+'  ïðè '+'X='+s1;
end;

end;

end.
djdron вне форума Ответить с цитированием
Старый 03.11.2010, 17:33   #3
casekey
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 95
По умолчанию

текст нечитаем.

смотрим строку 93 в программе, что то пропустили видимо
casekey вне форума Ответить с цитированием
Старый 03.11.2010, 18:54   #4
djdron
Пользователь
 
Регистрация: 13.11.2008
Сообщений: 12
По умолчанию

Всё со всем разобрался только теперь вот ошибка :
Цитата:
[Error] File not found: 'Unit1.dfm'
После сохранения ошибка пропала а эта появилась :
Цитата:
[Fatal Error] Lab3_Trush_Unit1.pas(40): File not found: 'Unit1.dcu'

Последний раз редактировалось djdron; 03.11.2010 в 19:04.
djdron вне форума Ответить с цитированием
Старый 03.11.2010, 20:07   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

"Разобрался" - это когда никаких ошибок не возникает и всё работает так, как надо!

я немножко "причесал" код. Вроде компилится.
проверяйте:
Вложения
Тип файла: rar Lab3fix.rar (80.1 Кб, 7 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2010, 20:24   #6
pray_driver
Форумчанин
 
Аватар для pray_driver
 
Регистрация: 18.08.2010
Сообщений: 140
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
"Разобрался" - это когда никаких ошибок не возникает и всё работает так, как надо!
Если только ты не трансформер
Люди бывают десяти типов: те, кто знают двоичную систему, и те, кто нет
pray_driver вне форума Ответить с цитированием
Старый 03.11.2010, 20:24   #7
djdron
Пользователь
 
Регистрация: 13.11.2008
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
"Разобрался" - это когда никаких ошибок не возникает и всё работает так, как надо!

я немножко "причесал" код. Вроде компилится.
проверяйте:
Спасибо, вродь всё ок.

А в чём там у меня ошибка была ?
djdron вне форума Ответить с цитированием
Старый 03.11.2010, 21:07   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А в чём там у меня ошибка была ?
не одна... несколько.
1)
Цитата:
Код:
implementation

uses Unit1, Lab3_Trush_Unit2;
надо удалить. Unit1 - нет исходника. Да и из него ничего и не вызывается

2)
Цитата:
Код:
  Else if (StrToFloat(Edit3.Text))<=
          (StrToFloat(Edit2.Text)) Then
    Begin
       ShowMessage('Початкове значення X повинне бути' +
                   ' меншим вiд кiнцевого!');
       Edit3.SetFocus;
    End;
  Else
    Lab3_Trush__Form2.Visible:= not Lab3_Trush__Form2.Visible

       end;
перед else точка с запятой не может стоять.

ну и пара лишних end ...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при компилляции в Delphi 2007 кода assembler tuition Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 10.12.2010 14:59
ошибка кода street-walker Общие вопросы Delphi 1 17.06.2010 22:32
В чём ошибка кода? Richard22 Общие вопросы Delphi 2 16.05.2010 00:27
ошибка в логике кода R@Ziel Помощь студентам 2 03.01.2010 16:10
В чем ошибка? (исходник прилагается) Зеленый Общие вопросы C/C++ 5 06.09.2008 16:16