ВУЗ:
Составители:
ɉɪɢɦɟɧɟɧɢɟ ɢɧɬɟɪɮɟɣɫɨɜ ɞɢɫɩɟɬɱɟɪɢɡɚɰɢɢ ɨɛɟɫɩɟɱɢɜɚɟɬ ɛɵɫɬɪɵɣ
ɜɵɡɨɜ ɦɟɬɨɞɨɜ ɢɧɬɟɪɮɟɣɫɚ ɩɪɢ ɩɨɡɞɧɟɦ ɫɜɹɡɵɜɚɧɢɢ, ɬɚɤ ɤɚɤ ɜ ɷɬɨɦ ɫɥɭ-
ɱɚɟ ɫɢɫɬɟɦɟ ɧɟ ɬɪɟɛɭɟɬɫɹ ɜɵɡɵɜɚɬɶ ɩɪɨɰɟɞɭɪɭ GetIDsOfNames. ȼ ɤɨɦɩɨ-
ɧɟɧɬɟ ɪɟɚɥɢɡɭɟɬɫɹ ɬɨɥɶɤɨ ɨɛɵɱɧɵɣ ɢɧɬɟɪɮɟɣɫ, ɚ ɢɧɬɟɪɮɟɣɫ ɞɢɫɩɟɬɱɟɪɢ-
ɡɚɰɢɢ ɦɨɠɟɬ ɩɪɢɦɟɧɹɬɶɫɹ ɬɨɥɶɤɨ ɜ ɩɪɨɰɟɫɫɟ ɨɛɪɚɳɟɧɢɹ ɤɥɢɟɧɬɚ ɤ COM-
ɫɟɪɜɟɪɭ.
5.3. ɉɪɢɦɟɪ ɪɟɚɥɢɡɚɰɢɢ ɜɫɬɪɨɟɧɧɨɝɨ COM-ɫɟɪɜɟɪɚ
ɚɜɬɨɦɚɬɢɡɚɰɢɢ
ȼ ɤɚɱɟɫɬɜɟ ɩɪɢɦɟɪɚ ɪɟɚɥɢɡɚɰɢɢ ɜɫɬɪɨɟɧɧɨɝɨ COM-ɫɟɪɜɟɪɚ ɚɜɬɨɦɚ-
ɬɢɡɚɰɢɢ ɪɟɚɥɢɡɭɟɦ ɤɨɦɩɨɧɟɧɬ ɩɟɪɟɜɨɞɚ ɰɟɥɨɝɨ ɱɢɫɥɚ ɜ ɞɜɨɢɱɧɵɣ, ɜɨɫɶ-
ɦɟɪɢɱɧɵɣ ɢ ɲɟɫɬɧɚɞɰɚɬɟɪɢɱɧɵɣ ɜɢɞ, ɤɨɬɨɪɵɣ ɛɭɞɟɬ ɜɵɜɨɞɢɬɶɫɹ ɜ ɜɢɞɟ
ɫɬɪɨɤɢ.
1. ȼɵɩɨɥɧɢɜ ɞɟɣɫɬɜɢɹ, ɨɩɢɫɚɧɧɵɟ ɜ ɩ. 2.2, ɫɨɯɪɚɧɢɦ ɩɪɨɟɤɬ ɩɨɞ
ɢɦɟɧɟɦ Convert.dpr.
2. Ɂɚɬɟɦ ɜɵɛɟɪɟɦ ɷɥɟɦɟɧɬ Automation Object ɜ ɞɢɚɥɨɝɨɜɨɦ ɨɤɧɟ New
Items (ɩ. 2.3). ȼ ɩɨɥɟ Class Name, ɦɚɫɬɟɪɚ Automation Objeɫt Wiz-
ard ɜɜɟɞɟɦ ObjConvert. ɇɚɠɚɜ ɧɚ ɤɧɨɩɤɭ OK, ɩɨɥɭɱɢɦ ɦɨɞɭɥɶ
ɫɥɟɞɭɸɳɟɝɨ ɫɨɞɟɪɠɚɧɢɹ:
unit Unit1;
interface
uses
ComObj, ActiveX, ObjConvert_TLB, StdVcl;
type
TObjConvert_ = class(TAutoObject, IObjConvert)
protected
{ Protected declarations }
end;
implementation
uses ComServ;
initialization
TAutoObjectFactory.Create(ComServer, TObjConvert_,
Class_ObjConvert_, ciMultiInstance, tmApartment);
end.
3. Ⱥɧɚɥɨɝɢɱɧɨ, ɤɚɤ ɢ ɜ ɩɪɢɦɟɪɟ ɩ. 3.4, ɨɩɢɲɟɦ ɜ ɢɧɬɟɪɮɟɣɫɟ
IObjConvert ɦɟɬɨɞɵ Bin, Hex, Oct.
47
4. ȼɨɡɜɪɚɬɢɦɫɹ ɜ ɦɨɞɭɥɶ Unit1. ȼ ɪɚɡɞɟɥɟ ɨɩɢɫɚɧɢɹ ɬɢɩɨɜ ɞɚɧɨ ɧɚɱɚɥɶ-
ɧɨɟ ɨɩɢɫɚɧɢɟ ɧɚɲɟɝɨ ɤɨɦɩɨɧɟɧɬɚ. ɂɫɯɨɞɹ ɢɡ ɷɬɨɝɨ ɨɩɢɫɚɧɢɹ, ɧɚɲ
ɤɨɦɩɨɧɟɧɬ ɧɚɫɥɟɞɭɟɬɫɹ ɨɬ ɤɥɚɫɫɚ TAutoɋomObject ɢ ɩɨɞɞɟɪɠɢɜɚɟɬ
ɢɧɬɟɪɮɟɣɫ IObjConvert. ȼ ɪɚɡɞɟɥɟ protected ɨɛɴɹɜɥɟɧɵ ɬɪɢ ɮɭɧɤɰɢɢ:
TObjConvert = class(TComObject, IConvert)
protected
{Declare IConvert methods here}
function Bin (const n: Word; var Str: WideString): Boolean;
stdcall;
function Oct(const n: Word; var Str: WideString): Boolean;
stdcall;
function Hex(const n: Word; var Str: WideString): Boolean;
stdcall;
end;
5. Ɉɫɬɚɟɬɫɹ ɬɨɥɶɤɨ ɪɟɚɥɢɡɨɜɚɬɶ ɮɭɧɤɰɢɢ Bin, Hex ɢ Oct ɚɧɚɥɨɝɢɱɧɨ, ɤɚɤ
ɢ ɜ ɩɪɢɦɟɪɟ ɩ. 3.4.
6. Ɉɬɤɨɦɩɢɥɢɪɨɜɚɜ ɩɪɢɥɨɠɟɧɢɟ, ɩɨɥɭɱɢɦ COM-ɫɟɪɜɟɪ, ɝɨɬɨɜɵɣ ɤ ɢɫ-
ɩɨɥɶɡɨɜɚɧɢɸ. Ɉɧ ɛɭɞɟɬ ɧɚɯɨɞɢɬɶɫɹ ɜ ɛɢɛɥɢɨɬɟɤɟ Convert.dll.
5.4. ɉɪɢɦɟɪ ɪɟɚɥɢɡɚɰɢɢ ɜɧɟɲɧɟɝɨ COM-ɫɟɪɜɟɪɚ
ɚɜɬɨɦɚɬɢɡɚɰɢɢ
ȼɧɟɲɧɢɟ COM-ɫɟɪɜɟɪɵ ɨɛɵɱɧɨ ɰɟɥɟɫɨɨɛɪɚɡɧɨ ɫɨɡɞɚɜɚɬɶ ɬɨɥɶɤɨ ɜ
ɬɟɯ ɫɥɭɱɚɹɯ, ɤɨɝɞɚ ɫɟɪɜɟɪ ɞɨɥɠɟɧ ɪɚɛɨɬɚɬɶ ɤɚɤ ɚɜɬɨɧɨɦɧɨɟ ɩɪɢɥɨɠɟɧɢɟ ɫɨ
ɫɜɨɢɦɢ ɫɨɛɫɬɜɟɧɧɵɦɢ ɩɪɚɜɚɦɢ.
ɉɪɢɦɟɱɚɧɢɟ 5.2.
ɍɞɚɥɟɧɧɵɣ ɞɨɫɬɭɩ, ɬ. ɟ. ɞɨɫɬɭɩ ɨɬ ɤɥɢɟɧɬɚ, ɜɵ-
ɩɨɥɧɹɟɦɨɝɨ ɧɚ ɞɪɭɝɨɦ ɤɨɦɩɶɸɬɟɪɟ ɫ ɢɫɩɨɥɶɡɨɜɚɧɢɟɦ DCOM, ɜɨɡɦɨɠɟɧ
ɬɨɥɶɤɨ ɤ ɜɧɟɲɧɟɦɭ ɫɟɪɜɟɪɭ ɚɜɬɨɦɚɬɢɡɚɰɢɢ.
ɉɪɢɜɟɞɟɦ ɩɪɨɫɬɨɣ ɩɪɢɦɟɪ ɪɟɚɥɢɡɚɰɢɢ ɜɧɟɲɧɟɝɨ COM-ɫɟɪɜɟɪɚ, ɤɨ-
ɬɨɪɵɣ ɩɨɞɞɟɪɠɢɜɚɟɬ ɤɨɦɩɨɧɟɧɬ ɚɜɬɨɦɚɬɢɡɚɰɢɢ ɞɥɹ ɢɡɦɟɧɟɧɢɹ ɰɜɟɬɚ
ɮɨɪɦɵ ɤɥɢɟɧɬɨɦ.
1. ɋɨɡɞɚɞɢɦ ɧɨɜɵɣ ɩɪɨɟɤɬ-ɩɪɢɥɨɠɟɧɢɟ MyServer.dpr ɫɨ ɫɜɨɟɣ ɮɨɪɦɨɣ.
2. ɉɨɦɟɫɬɢɦ ɜ ɩɪɨɟɤɬ ɨɛɴɟɤɬ ɚɜɬɨɦɚɬɢɡɚɰɢɢ, ɜɵɛɪɚɜ ɧɚ ɡɚɤɥɚɞɤɟ
ActiveX ɞɢɚɥɨɝɨɜɨɝɨ ɨɤɧɚ New Items (ɪɢɫ. 2.1) ɷɥɟɦɟɧɬ Automation
Object. ȼ ɩɨɥɟ Class Name ɦɚɫɬɟɪɚ Automation Objeɫt Wizard ɭɤɚɠɟɦ
AutoServer. ɇɚɠɚɜ ɧɚ ɤɧɨɩɤɭ OK, ɩɨɥɭɱɢɦ ɲɚɛɥɨɧ ɞɥɹ ɪɟɚɥɢɡɚɰɢɢ
ɤɨɦɩɨɧɟɧɬɚ ɚɜɬɨɦɚɬɢɡɚɰɢɢ.
3. ɂɫɩɨɥɶɡɭɹ ɪɟɞɚɤɬɨɪ ɛɢɛɥɢɨɬɟɤɢ ɬɢɩɨɜ, ɡɚɞɚɞɢɦ ɫɜɨɣɫɬɜɨ Color,
ɞɨɫɬɭɩɧɨɟ ɞɥɹ ɱɬɟɧɢɹ ɢ ɡɚɩɢɫɢ, ɜ ɢɧɬɟɪɮɟɣɫɟ IObjServer.
48
���������� ����������� ��������������� ������������ ������� 4. ����������� � ������ Unit1. � ������� �������� ����� ���� ������-
����� ������� ���������� ��� ������� ����������, ��� ��� � ���� ���- ��� �������� ������ ����������. ������ �� ����� ��������, ���
��� ������� �� ��������� �������� ��������� GetIDsOfNames. � �����- ��������� ����������� �� ������ TAuto�omObject � ������������
����� ����������� ������ ������� ���������, � ��������� ����������- ��������� IObjConvert. � ������� protected ��������� ��� �������:
����� ����� ����������� ������ � �������� ��������� ������� � COM- TObjConvert = class(TComObject, IConvert)
�������. protected
{Declare IConvert methods here}
5.3. ������ ���������� ����������� COM-������� function Bin (const n: Word; var Str: WideString): Boolean;
������������� stdcall;
function Oct(const n: Word; var Str: WideString): Boolean;
� �������� ������� ���������� ����������� COM-������� ������- stdcall;
������� ��������� ��������� �������� ������ ����� � ��������, ����- function Hex(const n: Word; var Str: WideString): Boolean;
�������� � ����������������� ���, ������� ����� ���������� � ���� stdcall;
������. end;
1. �������� ��������, ��������� � �. 2.2, �������� ������ ��� 5. �������� ������ ����������� ������� Bin, Hex � Oct ����������, ���
������ Convert.dpr. � � ������� �. 3.4.
2. ����� ������� ������� Automation Object � ���������� ���� New 6. �������������� ����������, ������� COM-������, ������� � ��-
Items (�. 2.3). � ���� Class Name, ������� Automation Obje�t Wiz- �����������. �� ����� ���������� � ���������� Convert.dll.
ard ������ ObjConvert. ����� �� ������ OK, ������� ������
���������� ����������: 5.4. ������ ���������� �������� COM-�������
unit Unit1; �������������
interface ������� COM-������� ������ ������������� ��������� ������ �
��� �������, ����� ������ ������ �������� ��� ���������� ���������� ��
uses
������ ������������ �������.
ComObj, ActiveX, ObjConvert_TLB, StdVcl;
type ���������� 5.2. ��������� ������, �. �. ������ �� �������, ��-
TObjConvert_ = class(TAutoObject, IObjConvert) ���������� �� ������ ���������� � �������������� DCOM, ��������
protected ������ � �������� ������� �������������.
{ Protected declarations } �������� ������� ������ ���������� �������� COM-�������, ��-
end; ����� ������������ ��������� ������������� ��� ��������� �����
implementation ����� ��������.
1. �������� ����� ������-���������� MyServer.dpr �� ����� ������.
uses ComServ;
2. �������� � ������ ������ �������������, ������ �� ��������
initialization ActiveX ����������� ���� New Items (���. 2.1) ������� Automation
TAutoObjectFactory.Create(ComServer, TObjConvert_, Object. � ���� Class Name ������� Automation Obje�t Wizard ������
Class_ObjConvert_, ciMultiInstance, tmApartment); AutoServer. ����� �� ������ OK, ������� ������ ��� ����������
end. ���������� �������������.
3. ��������� �������� ���������� �����, ������� �������� Color,
3. ����������, ��� � � ������� �. 3.4, ������ � ����������
��������� ��� ������ � ������, � ���������� IObjServer.
IObjConvert ������ Bin, Hex, Oct.
47 48
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »
