![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Необходимо создать программу с использованием динамической библиотеки. А именно: создать подпрограммы обработки множеств: объединение, вычитание, пересечение, проверка вхождение одного множества в другое.
Само задание, методика разработки и пример программы прикреплены. Код библиотеки: Код Delphi Код:
library Pro; uses SysUtils, Classes, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} function perese4enie (Mn1, Mn2:Integer):Integer; begin result:=(Mn1*Mn2) end; function objedinenie (Mn1, Mn2:Ineger):Integer; begin result:=(Mn1+Mn2) end; function vichitanie (Mn1, Mn2:Integer):Integer; begin if RadioButton1.Checked = True then result:=(Mn1-Mn2); end else begin result:=(Mn2-Mn1); end; function vxoshdenie (Mn1, Mn2:Integer):Integer; begin if RadioGroup1.ItemIndex=0 then begin if Mn1 <= Mn2 then Memo1.Lines.Add('Первое множество включено во второе') else Memo1.Lines.Add('Первое множество НЕ включено во второе'); end else begin if Mn1 >= Mn2 then Memo1.Lines.Add('Второе множество включено в первое') else Memo1.Lines.Add('Второе множество НЕ включено в первое'); end; end; exports perese4enie,vxoshdenie, vichitanie, objedinenie; end. Код самой программы (Форма, кнопки): Код Delphi Unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type Integer= set of 1..255; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button4: TButton; Memo1: TMemo; RadioGroup1: TRadioGroup; Button3: TButton; procedure PrintSetof(II: Integer); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1 : TForm1; Mn1, Mn2 : Integer; s, result : Integer; function perese4enie (Mn1, Mn2:Integer):Integer; stdcall; external 'Pro.dll'; function objedinenie (Mn1, Mn2:Integer):Integer; stdcall; external 'Pro.dll'; function vichitanie (Mn1, Mn2:Integer):Integer; stdcall; external 'Pro.dll'; function vxoshdenie (Mn1, Mn2:Integer):Integer; stdcall; external 'Pro.dll'; implementation {$R *.dfm} procedure Tform1.PrintSetof(II: Integer); var ddd : Integer; s : String; begin for ddd :=1 to 255 do begin if ddd in II then s := s + ' '+IntToStr(ddd); end; Memo1.Lines.Add(s); s := ''; Memo1.Lines.Add('-----------------------'); end; procedure TForm1.FormCreate(Sender: TObject); begin for s := 25 to 123 do Include(Mn1, s); for s := 5 to 90 do Include(Mn2, s); Memo1.Lines.Add('Множества 25..123 и 5..90 успешно созданы.'); PrintSetof(Mn1); PrintSetof(Mn2); end; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add('В пересечении этих множеств:'); PrintSetof(result); end; procedure TForm1.Button2Click(Sender: TObject); begin Memo1.Lines.Add('В объединении этих множеств:'); PrintSetof(result); end; procedure TForm1.Button3Click(Sender: TObject); begin if RadioGroup1.ItemIndex=0 then begin Memo1.Lines.Add('В разности 1-ого и 2-ого:'); PrintSetof(result); end else begin Memo1.Lines.Add('В разности 2-ого и 1-ого:'); PrintSetof(result); end; end; procedure TForm1.Button4Click(Sender: TObject); begin if RadioGroup1.ItemIndex=0 then begin if Mn1 <= Mn2 then Memo1.Lines.Add('Первое множество включено во второе') else Memo1.Lines.Add('Первое множество НЕ включено во второе'); end else begin if Mn1 >= Mn2 then Memo1.Lines.Add('Второе множество включено в первое') else Memo1.Lines.Add('Второе множество НЕ включено в первое'); end; end; end. Помогите исправить ошибки и понять как быть с проверкой вхождения множеств одного в другое, где его надо правильно записать в библиотеке или на кнопке? Последний раз редактировалось Admin, 27.05.2012 в 13:43. |