close

Вход

Забыли?

вход по аккаунту

?

LR10

код для вставкиСкачать
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Тульский государственный университет"
Политехнический институт
Кафедра "Автоматизированные станочные системы"
Курс "Информатика"
ЛАБОРАТОРНАЯ РАБОТА №10
Вариант №27
Выполнил студент гр. 622131
Жеремиаш Филомену
Проверил Доцент каф. АСС Зайков Сергей Геннадьевич
Тула 2013
Задание : Вывести результаты работы №4 в MS Word!
Выполнить задание №2, вынеся процедуру или функцию в DLL-библиотеку:
Задание №2:
Исходный код DLL-библиотеки :
library find;
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
uses
SysUtils,
Classes;
type mass=array[0..4,0..3] of real;
var
B:Mass;
procedure FindMin(B:Mass; i:byte); EXPORT;
var
min:real;
j:integer;
begin
for j:=0 to 3 do begin
if min>B[i,j] then min:= b[i,j];
end;
end;
{$R *.res}
EXPORTS
findmin;
begin
end.
Исходный код программы :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, WordXP, OleServer;
type mass=array[0..4,0..3] of real;
type Minimum=array[0..4] of real;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Button2: TButton;
WordApplication1: TWordApplication;
WordDocument1: TWordDocument;
procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
B:Mass;
MassMin:minimum;
t:table;
implementation
{$R *.dfm}
procedure create_Table(var t:table; var WA1:TWordApplication; var WD1:TWordDocument);
var msw:OLEvariant;
begin
t:=WD1.Tables.Add(WA1.Selection.Range,5,4,EmptyParam,EmptyParam);
t.AllowAutoFit:=True;
msw:=wdAutoFitContent;
t.AutoFitBehavior(msw);
end;
procedure FindMin(B:Mass);
var
min:real;
i,j:integer;
begin
for i:= 0 to 4 do begin // крутим 5 раз так как у нас 5 строк
min:=b[i,0];
for j:=0 to 3 do begin // крутим 4 раза так как у нас 4 столбца
if Min>b[i,j] then min:=b[i,j];
end;
MassMin[i]:=min;
end;
end;
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
//данная процедура сделанна вместо клавиши ручной ввод
//эвент при котором значения в массиве обновляются автоматически
//после перезаписи в стринггрид.
if stringgrid1.cells[ACOL,AROW]='' then exit;
try
B[AROW,ACOL]:=StrToInt(StringGrid1.Cells[ACOL,AROW]);
except
ShowMessage('Ошибка ввода в ячейке.' +#32+ (inttostr(ACOL))+inttostr(AROW));
exit
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
Y:real;
begin
FindMin(b);
{y:=5*MassMin[0]+4*Massmin[1]+3*MassMin[2] + 2*MassMin[3]+1*MassMin[4]; }
//так использовать не будем , сделаем с циклами
y:=0;
for i:=0 to 4 do begin
y:= y+ (5-i)*MassMin[i]
end;
Edit1.Text:=floattostr(y);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
otvet:OLEVariant;
i,j:integer;
begin
// подключение к Word
WordApplication1.Connect;
// Создание нового документа и подключение к нему WordDocument1
WordDocument1.ConnectTo(WordApplication1.Documents.Add
(EmptyParam,EmptyParam,EmptyParam,EmptyParam));
// Добавление текста в Word
create_Table(t,WordApplication1,WordDocument1);
begin
for i:=1 to 5 do
for j:=1 to 4 do
begin
t.Cell(i,j).Select;
WordApplication1.Selection.InsertAfter(FloatToStrF(b[i-1,j-1],ffFixed,10,0));
end;
end;
WordApplication1.selection.InsertAfter(#13+#13+'Автоматический вывод ответа программы'+#32+(Edit1.text));
otvet:=ExtractFilePath(Application.ExeName)+'Otchet.doc';
// Сохранение документа
WordDocument1.SaveAs(otvet);
// Закрытие документа в Word
WordDocument1.Close;
// Завершение работы с документом
WordDocument1.Disconnect;
// Закрытие Word
WordApplication1.Quit;
// Завершение сеанса работы с Word
WordApplication1.Disconnect;
MessageDlg('Вывод отчета завершен',mtInformation,[mbOK],0)
end;
end.
Блок схемы программы : Выполненное задание:
Вывод: в ходе выполнения данной лабораторной работы была изучена работа c MS Word через Delphi.
Документ
Категория
Рефераты
Просмотров
13
Размер файла
322 Кб
Теги
лабораторная работа, lr10, лаба, лабораторная
1/--страниц
Пожаловаться на содержимое документа