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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 16:49   #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); 
procedure SpeedCutting(Cv:word; x2,y2,m:real; T1:byte; var V:real);   
procedure Comparison(g:byte; Pz:real; var OnOff:boolean);  /

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.
А затем написала программу, где таблицу заданных значений записала в виде массива:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    LabeledEdit4: TLabeledEdit;
    LabeledEdit5: TLabeledEdit;
    RadioGroup1: TRadioGroup;
    Image1: TImage;
    Button1: TButton;
    procedure Show;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Cut: TCutter;
  OnOff: boolean;
  j:byte;
  V, Pz:real;
  const t:array[1..3] of byte=(4,2,3);
  const S:array[1..3] of real=(0.8,1.2,0.35);
  const T1:array[1..3] of byte=(45,60,60);  
  const l:array[1..3] of byte=(30,40,35);
  const g:array[1..3] of byte=(20,35,20);   
  const Cv:array[1..3] of word=(221,243,328);
  const Cp:array[1..3] of word=(300,92,40);
    const x1:array[1..3] of real=(1,1,1);
  const y1:array[1..3] of real=(0.75,0.75,0.75);
  const n:array[1..3] of real=(-0.15,0,0);
  const x2:array[1..3] of real=(0.15,0.15,0.15);
  const y2:array[1..3] of real=(0.45,0.4,0.5);
  const m:array[1..3] of real=(0.2,0.2,0.28);

  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
 Cut:=TCutter.Create(show);
end;


procedure TForm1.RadioGroup1Click(Sender: TObject);
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.t:=t[j];
  Cut.S:=S[j];
  Cut.l:=l[j];
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:byte;
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;

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

Но мне сказали переделать. необходимо, чтобы значения считывались не из массива в программе, а из текстового файла.
Как я поняла необходимо таблицу значений записать в Word файл.
А как их оттуда считать? Ведь мне нужно будет для конкретной переменной выбирать отдельную ячейку в таблице (при условии что я в программе выбираю один из трех режимов работы). Как это лучше сделать? Подскажите, пожалуйста!
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 08.11.2010, 14:20   #3
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Неужели никто не может мне помочь?
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 08.11.2010, 14:25   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Lisёноk Посмотреть сообщение
Но мне сказали переделать. необходимо, чтобы значения считывались не из массива в программе, а из текстового файла.
Как я поняла необходимо таблицу значений записать в Word файл.
А как их оттуда считать? Ведь мне нужно будет для конкретной переменной выбирать отдельную ячейку в таблице (при условии что я в программе выбираю один из трех режимов работы). Как это лучше сделать? Подскажите, пожалуйста!
Считать из самого файла будет сложновато, но есть проверенный вариант. Вы через свою программу запускаете Ворд, открываете файл и передаете данные в программу. Такое возможно, единственно Ворд конечно должен быть установлен на Вашем компьютере.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.11.2010, 15:15   #5
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

А как из открытого файла передать данные в программу?
Я что-то теперь совсем запуталась...
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 08.11.2010, 15:18   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Поcмотрите - http://www.codenet.ru/progr/delphi/stat/Word.php например. Эта тема очень известная и ее полно в интернете. да что в инете, на данном формуе она всплывала и не раз.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считывание из файла kaljan775 Общие вопросы C/C++ 4 07.10.2010 14:59
считывание с файла G.I.JOE Общие вопросы C/C++ 2 06.06.2010 09:18
Считывание строк ZET78 Общие вопросы C/C++ 6 11.05.2010 07:41
Считывание данных из БД aimk0 БД в Delphi 0 05.05.2010 23:53
c++ считывание с файла. tsergey Помощь студентам 20 24.04.2010 23:30