ВУЗ:
Составители:
ɉɪɢɦɟɧɟɧɢɟ ɢɧɬɟɪɮɟɣɫɨɜ ɞɢɫɩɟɬɱɟɪɢɡɚɰɢɢ ɨɛɟɫɩɟɱɢɜɚɟɬ ɛɵɫɬɪɵɣ
ɜɵɡɨɜ ɦɟɬɨɞɨɜ ɢɧɬɟɪɮɟɣɫɚ ɩɪɢ ɩɨɡɞɧɟɦ ɫɜɹɡɵɜɚɧɢɢ, ɬɚɤ ɤɚɤ ɜ ɷɬɨɦ ɫɥɭ-
ɱɚɟ ɫɢɫɬɟɦɟ ɧɟ ɬɪɟɛɭɟɬɫɹ ɜɵɡɵɜɚɬɶ ɩɪɨɰɟɞɭɪɭ 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
- …
- следующая ›
- последняя »