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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2010, 11:42   #1
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию Непонятная ошибка

Добрый день! Исправляла в программе типы данных переменных и появилась ошибка. Не пойму в чем дело.
Код объекта:
Код:
unit cutter;


interface

uses math;

Type TP=procedure of object;
Tcutter=CLASS

Power:real;        //тангенциальная составляющая силы резания
S:real;            //подача инструмента
l:real;            //вылет резца
t: real           //глубина резания
B: byte;           //ширина державки
H: byte;           //высота державки
OnOff:boolean;     //резец включен/выключен
p:TP;

Constructor Create(PP:TP);
Destructor Free;
procedure PowerCutting(Cp:word; V,x1,y1,n:real; var Pz:real);         //сила резания Pz
procedure SpeedCutting(Cv:word; x2,y2,m:real; T1:integer; var V:real);   //скорость резания V
procedure Comparison(g:byte; Pz:real; var OnOff:boolean);             //сравнение Pz и B*H

end;

implementation

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

//*************

CONSTRUCTOR TCutter.Create(PP:TP);
begin
  INHERITED Create;
  p:=pp;
end;

//*************

Destructor TCutter.Free;
 begin

 end;

//*************

procedure TCutter.PowerCutting;
begin
  Pz:=Cp*(math.power(t,x1))*(math.power(S,y1))*(math.power(V,n));
  p;
end;

//*************

procedure TCutter.SpeedCutting;
begin
  V:=Cv/((math.power(t,x2)*(math.power(S,y2))*(math.power(T1,m))));
end;

//*************

procedure TCutter.Comparison;
begin
  If B*sqr(H)>=((6*Pz*l)/g) then
  OnOff:=true
  else
  OnOff:=false
end;

end.
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 19.12.2010, 11:43   #2
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Код программы:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    LabeledEdit4: TLabeledEdit;
    LabeledEdit5: TLabeledEdit;
    RadioGroup1: TRadioGroup;
    Image1: TImage;
    Button1: TButton;
    XPManifest1: TXPManifest;
    Button2: TButton;
    Label1: TLabel;
    Button3: TButton;
    procedure Show;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Const Fnam = '_Тест_.txt'; // Имя файла для загрузки
var
  Form1: TForm1;
  Cut: TCutter;
  OnOff: boolean;
  j:byte;
  V, Pz:real;
  FAl :TStrings; // весь файл
  It :longint;   // позиция в списке FAl
  t:ARRAY OF byte;
  S:ARRAY OF real;
  l:ARRAY OF real;
  T1:ARRAY OF byte;  //стойкость резца
  g:ARRAY OF byte;   //допускаемое напряжение на изгиб материала
  //константы
  Cv:ARRAY OF word;
  Cp:ARRAY OF word;
  //показатели степени
  x1:ARRAY OF real;
  y1:ARRAY OF real;
  n:ARRAY OF real;
  x2:ARRAY OF real;
  y2:ARRAY OF real;
  m:ARRAY OF real;
  myFile : TextFile;
  sc:integer;
  buf: string[80];
 const  B:array[1..9] of byte=(10,12,12,16,16,20,20,25,25);
 const  H:array[1..9] of byte=(16,16,20,20,25,25,32,32,40);


implementation

{$R *.dfm}

procedure TForm1.Show;
begin
  LabeledEdit1.Text:=floattostr(Cut.t) + ',мм';
  LabeledEdit2.Text:=floattostr(Cut.S) + ',мм/об';
  LabeledEdit3.Text:=floattostr(Cut.l) + ',мм';
  Application.ProcessMessages;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Decimalseparator:='.' ;
  It := 0;
  FAl := TStringList.Create; // весь файл
end;


procedure TForm1.RadioGroup1Click(Sender: TObject);
var
i:integer;
text   : string;
begin
  case RadioGroup1.ItemIndex of
  0: j:=1;
  1: j:=2;
  2: j:=3;
end;
 with Image1.Canvas do
 begin
   Brush.Color:=clWhite;
   Brush.Style:=bsSolid;
   FillRect(Image1.ClientRect);
   Application.ProcessMessages;
 end;
 Cut:=TCutter.Create(show);
FAl := TStringList.Create; // весь файл
 FAl.Clear;
 FAl.LoadFromFile(FNam);
 It := 0;
 AssignFile(myFile, '_Тест_1.txt');
 Reset(myFile);
 sc:=0;
 while not Eof(myFile) do
  begin
  readln(myFile, buf);
   if buf='{' then
   sc:= sc+1;
  end;
  Label1.Caption:= 'количество данных' + inttostr(sc);
setlength(t,sc);
setlength(s,sc);
setlength(l,sc);
setlength(t1,sc);
setlength(g,sc);
setlength(Cp,sc);
setlength(x1,sc);
setlength(y1,sc);
setlength(n,sc);
setlength(Cv,sc);
setlength(x2,sc);
setlength(y2,sc);
setlength(m,sc);
 {
  Cut.t:=t[j];
  Cut.S:=S[j];
  Cut.l:=l[j];  }
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:byte;
begin
i:=0;
if (RadioGroup1.ItemIndex=-1) then
begin
messageBox(Handle,'Выберите режим','Выход', mb_ok or mb_iconquestion)
end
else if (RadioGroup1.ItemIndex=0) or (RadioGroup1.ItemIndex=1) or
(RadioGroup1.ItemIndex=2) then
begin
  Cut.SpeedCutting(Cv[j],x2[j],y2[i],m[j],T1[j],V);
  Cut.PowerCutting(Cp[j],V,x1[j],y1[j],n[j],Pz);
  LabeledEdit4.text:=floattostr(Pz) + ',кгс';
for j:=1 to 9 do
begin
Cut.B:=B[j];
Cut.H:=H[j];
Cut.Comparison(g[j],Pz,OnOff);
if OnOff=false then
 begin
 LabeledEdit5.text:='Нет подходящего резца';
 end
 else
 if (B[i]*sqr(H[i])-((6*Pz*Cut.l)/g[i]))<(B[i+1]*sqr(H[i+1])-((6*Pz*Cut.l)/g[i])) then
 begin
 LabeledEdit5.text:=inttostr(Cut.B)+'x'+inttostr(Cut.H);
with Image1.Canvas do
 begin
   Brush.Color:=clWhite;
   Brush.Style:=bsBDiagonal;
   Pen.Color:=clGray;
   Pen.Style:=psSolid;
   Pen.Width:=5;
   Rectangle(trunc(Image1.Width DIV 2 - (Cut.B div 2)*3.8), trunc(Image1.Height DIV 2 - (Cut.H div 2)*3.8),
   trunc(Image1.Width DIV 2 + (Cut.B div 2)*3.8), trunc(Image1.Height DIV 2 + (Cut.H div 2)*3.8));
   Application.ProcessMessages;
 end;
 exit;
 end;
 end;
 end;
end;

procedure Tform1.FormDestroy(Sender: TObject);
begin
 Cut.Free;
end;
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 19.12.2010, 11:44   #3
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
var i,j :integer;
begin
 FAl := TStringList.Create; //
 FAl.Clear;
 FAl.LoadFromFile(FNam);
 i:=0;
 j:=0;
 Reset(myFile);
 //while not Eof(myFile) do
while Fal.Strings[i]<> Fal.Strings[45]  do
 begin
 if (FAl.Strings[i]<>'{') and (FAl.Strings[i]<>'}') then
  begin
   t[j]:=StrToint(Fal.Strings[i]);
   s[j]:=strtofloat(Fal.Strings[i+1]);
   T1[j]:=StrToint(Fal.Strings[i+2]);
   l[j]:=StrToint(Fal.Strings[i+3]);
   g[j]:=StrToint(Fal.Strings[i+4]);
   Cp[j]:=StrToint(Fal.Strings[i+5]);
   x1[j]:=StrTofloat(Fal.Strings[i+6]);
   y1[j]:=StrTofloat(Fal.Strings[i+7]);
   n[j]:=StrTofloat(Fal.Strings[i+8]);
   Cv[j]:=StrToint(Fal.Strings[i+9]);
   x2[j]:=StrToint(Fal.Strings[i+10]);
   y2[j]:=StrToint(Fal.Strings[i+11]);
   m[j]:=StrToint(Fal.Strings[i+12]);
   if RadioGroup1.ItemIndex = 0 then
   begin
      Cut.t:=t[0];
     Cut.S:=S[0];
     Cut.l:=l[0];
     end
   else if RadioGroup1.ItemIndex = 1 then
   begin
      Cut.t:=t[1];
     Cut.S:=S[1];
     Cut.l:=l[1];
       end
        else if RadioGroup1.ItemIndex = 2 then
     begin
      Cut.t:=t[2];
     Cut.S:=S[2];
     Cut.l:=l[2];
     end;
   readln(myFile, buf);
   j:= j+1;
   I:= i+12;
   end;
   i:=i+1;
   end;
 end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 FAl.Free;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
 f:TextFile;
 FileDir:String;
begin
 FileDir:='_Тест_1.txt';
AssignFile(f,FileDir);
if not FileExists(FileDir) then
 begin
  Rewrite(f);
  CloseFile(f);
 end;
Append(f);
Writeln(f,LabeledEdit1.Text);
Writeln(f,LabeledEdit2.Text);
Writeln(f,LabeledEdit3.Text);
Writeln(f,LabeledEdit4.Text);
Writeln(f,LabeledEdit5.Text);
Flush(f);
CloseFile(f);
end;




end.
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 19.12.2010, 11:44   #4
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

А сама ошибка
Цитата:
[Error] cutter.pas(15): Invalid compiler directive: 'B'
относится к строке
Цитата:
Код:
B: byte;           //ширина державки
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 19.12.2010, 15:08   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
t: real //глубина резания
B: byte; //ширина державки
а точка-запятая где? )))
И потом, ты предлагаешь за тебя по исходникам проект пересобирать? На это нужно порядочно времени. Так что в следующий раз прикрепляй в архиве все, если исходник огромный.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VS C++,непонятная ошибка RFbager Общие вопросы C/C++ 4 31.10.2010 03:30
Непонятная ошибка Denis0n Microsoft Office Excel 7 24.08.2010 16:12
Непонятная ошибка Дырдин Общие вопросы C/C++ 7 14.10.2009 21:30
Непонятная ошибка. program123 Общие вопросы Delphi 12 12.04.2009 23:07
Непонятная ошибка Slash Общие вопросы Delphi 6 19.06.2007 14:45