ВУЗ:
Составители:
ɇɚ ɩɟɪɜɵɣ ɜɡɝɥɹɞ, ɦɨɠɟɬ ɜɨɡɧɢɤɧɭɬɶ ɜɩɟɱɚɬɥɟɧɢɟ, ɱɬɨ ɫɭɳɟɫɬɜɭɟɬ
ɢɡɥɢɲɧɹɹ ɞɭɚɥɶɧɨɫɬɶ ɧɚ ɧɚɥɢɱɢɟ ɤɥɚɫɫɚ ɤɨɦɩɨɧɟɧɬɚ ɢ ɫɨɨɬɜɟɬɫɬɜɭɸɳɟɣ
ɟɦɭ ɮɚɛɪɢɤɢ ɤɥɚɫɫɚ, ɬɚɤ ɤɚɤ ɨɞɧɚ ɮɚɛɪɢɤɚ ɤɥɚɫɫɨɜ ɦɨɠɟɬ ɜɡɹɬɶ ɧɚ ɫɟɛɹ
ɜɫɟ ɡɚɛɨɬɵ ɨ ɫɨɡɞɚɧɢɢ ɦɧɨɠɟɫɬɜɚ ɤɨɦɩɨɧɟɧɬɨɜ. ɇɨ ɧɚ ɫɚɦɨɦ ɞɟɥɟ ɢɦɟɟɬɫɹ
ɬɨɥɶɤɨ ɨɞɢɧ ɷɤɡɟɦɩɥɹɪ ɝɟɧɟɪɚɬɨɪɚ ɤɨɦɩɨɧɟɧɬɨɜ (ComServer), ɤɨɬɨɪɵɣ
ɧɚɯɨɞɢɬɫɹ ɜ ɩɨɥɟ ɡɪɟɧɢɹ COM ɢ ɫɨɞɟɪɠɢɬ ɫɩɢɫɨɤ ɜɫɟɯ ɜɧɭɬɪɟɧɧɢɯ ɨɛɴɟɤ-
ɬɨɜ ɮɚɛɪɢɤ ɤɥɚɫɫɨɜ.
Ƚɟɧɟɪɚɬɨɪ ɤɨɦɩɨɧɟɧɬɨɜ ɢɡɨɥɢɪɭɟɬ ɦɟɯɚɧɢɡɦ ɪɟɚɥɢɡɚɰɢɢ COM ɨɬ ɫɚ-
ɦɨɝɨ ɩɪɨɰɟɫɫɚ ɮɨɪɦɢɪɨɜɚɧɢɹ ɨɛɴɟɤɬɚ. ȿɫɥɢ ɛɵ ɬɚɤɨɝɨ ɝɟɧɟɪɚɬɨɪɚ ɧɟ ɛɵ-
ɥɨ, ɬɨ ɩɪɢɲɥɨɫɶ ɛɵ ɜɵɩɨɥɧɹɬɶ ɧɟɩɨɫɪɟɞɫɬɜɟɧɧɵɣ ɜɵɡɨɜ ɤɨɧɫɬɪɭɤɬɨɪɚ
ɤɥɚɫɫɚ, ɱɬɨɛɵ ɫɨɡɞɚɬɶ ɨɛɴɟɤɬ. Ɉɫɧɨɜɧɚɹ ɢɞɟɹ ɬɟɯɧɨɥɨɝɢɢ ɫɨɫɬɨɢɬ ɜ ɬɨɦ,
ɱɬɨɛɵ ɧɟ ɧɚɤɥɚɞɵɜɚɬɶ ɨɝɪɚɧɢɱɟɧɢɣ ɧɚ ɬɨ, ɤɚɤ ɪɟɚɥɢɡɨɜɚɧ ɨɛɴɟɤɬ, ɚɜɵ-
ɩɨɥɧɹɟɦɨɟ ɤɨɧɫɬɪɭɤɬɨɪɨɦ ɫɨɡɞɚɧɢɟ ɟɫɬɶ ɧɟ ɱɬɨ ɢɧɨɟ, ɤɚɤ ɨɞɢɧ ɢɡ ɤɨɦɩɨ-
ɧɟɧɬɨɜ ɩɪɨɰɟɫɫɚ ɪɟɚɥɢɡɚɰɢɢ.
ɉɪɢɦɟɱɚɧɢɟ 2.9.
ɋɥɟɞɭɟɬ ɡɚɦɟɬɢɬɶ, ɱɬɨ ɬɟɯɧɨɥɨɝɢɹ COM ɜɨɜɫɟ ɧɟ
ɬɪɟɛɭɟɬ, ɱɬɨɛɵ ɤɨɦɩɨɧɟɧɬɵ ɛɵɥɢ ɪɟɚɥɢɡɨɜɚɧɵ ɫ ɢɫɩɨɥɶɡɨɜɚɧɢɟɦ ɈɈɉ,
ɩɪɨɫɬɨ ɬɚɤɨɣ ɩɨɞɯɨɞ ɹɜɥɹɟɬɫɹ ɧɚɢɛɨɥɟɟ ɭɞɨɛɧɵɦ.
ɉɨɦɢɦɨ ɮɭɧɤɰɢɣ ɩɨɪɨɠɞɟɧɢɹ ɤɨɦɩɨɧɟɧɬɨɜ, ɮɚɛɪɢɤɚ ɤɥɚɫɫɨɜ ɯɪɚɧɢɬ
ɞɚɧɧɵɟ ɨ ɦɟɬɨɞɟ ɫɨɡɞɚɧɢɹ ɷɤɡɟɦɩɥɹɪɚ ɤɨɦɩɨɧɟɧɬɚ, ɬɢɩ ɦɨɞɟɥɢ ɩɨɬɨɤɨɜ
ɡɚɞɚɱ ɢ ɞɪɭɝɭɸ ɧɟɨɛɯɨɞɢɦɭɸ ɢɧɮɨɪɦɚɰɢɸ, ɤɨɬɨɪɚɹ ɩɟɪɟɞɚɟɬɫɹ ɜ ɤɨɧɫɬ-
ɪɭɤɬɨɪ. ɇɢɠɟ ɩɪɢɜɟɞɟɧ ɤɨɧɫɬɪɭɤɬɨɪ ɤɥɚɫɫɚ TClassFactory, ɢɫɩɨɥɶɡɭɟɦɵɣ
ɞɥɹ ɪɟɚɥɢɡɚɰɢɢ ɩɪɨɫɬɵɯ ɤɨɦɩɨɧɟɧɬɨɜ:
TClassFactory.Create(ComServer {ɫɬɚɧɞɚɪɬɧɨɟ ɢɦɹ ɮɚɛɪɢɤɢ ɤɥɚɫɫɨɜ
ɜ Delphi}, <ɢɦɹ ɤɥɚɫɫɚ>, <CLSID ɤɥɚɫɫɚ>, <ɦɟɬɨɞ ɫɨɡɞɚɧɢɹ ɷɤɡɟɦɩ-
ɥɹɪɚ ɤɨɦɩɨɧɟɧɬɚ>, <ɬɢɩ ɦɨɞɟɥɢ ɩɨɬɨɤɨɜ ɡɚɞɚɱ>);
Ɇɟɬɨɞ ɫɨɡɞɚɧɢɹ ɷɤɡɟɦɩɥɹɪɚ ɤɨɦɩɨɧɟɧɬɚ ɢ ɬɢɩ ɦɨɞɟɥɢ ɩɨɬɨɤɨɜ ɡɚɞɚɱ
ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɭɫɬɚɧɚɜɥɢɜɚɸɬɫɹ ɧɚ ɨɫɧɨɜɟ ɞɚɧɧɵɯ, ɜɜɟɞɟɧɧɵɯ ɜ ɦɚɫɬɟɪɟ
COM Object Wizard (ɪɢɫ. 2.2).
Ⱦɥɹ ɩɪɨɫɬɨɬɵ ɨɛɪɚɳɟɧɢɹ ɤ ɮɚɛɪɢɤɟ ɤɥɚɫɫɚ ɢɫɩɨɥɶɡɭɸɬɫɹ Co-ɤɥɚɫɫɵ,
ɤɨɬɨɪɵɟ ɩɨɞɞɟɪɠɢɜɚɸɬ ɬɪɢ ɮɭɧɤɰɢɢ:
<ɂɦɹ Co-ɤɥɚɫɫɚ> = class
class function Create: <ɢɧɬɟɪɮɟɣɫ ɤɨɦɩɨɧɟɧɬɚ>;
class function CreateRemote(const MachineName: string): <ɢɧɬɟɪ-
ɮɟɣɫ ɤɨɦɩɨɧɟɧɬɚ>;
end;
Create – ɩɪɢɦɟɧɹɟɬɫɹ ɞɥɹ ɩɨɥɭɱɟɧɢɹ ɧɨɜɨɝɨ ɷɤɡɟɦɩɥɹɪɚ ɤɨɦɩɨɧɟɧɬɚ.
CreateRemote – ɫɨɡɞɚɟɬ ɷɤɡɟɦɩɥɹɪ ɤɨɦɩɨɧɟɧɬɚ ɧɚ ɭɞɚɥɟɧɧɨɣ ɦɚɲɢɧɟ
(ɩɪɢɦɟɧɹɟɬɫɹ ɜ DCOM).
23
Ɉɛɵɱɧɨ, ɟɫɥɢ ɩɥɚɧɢɪɭɟɬɫɹ, ɱɬɨ ɤɨɦɩɨɧɟɧɬ ɛɭɞɟɬ ɡɚɩɪɚɲɢɜɚɬɶɫɹ ɤɥɢ-
ɟɧɬɨɦ, ɬɨ ɞɥɹ ɧɟɝɨ ɫɨɡɞɚɟɬɫɹ Co-ɤɥɚɫɫ, ɱɬɨɛɵ ɧɟ ɡɚɭɱɢɜɚɬɶ ɞɨɫɬɚɬɨɱɧɨ
ɞɥɢɧɧɵɣ ɭɧɢɤɚɥɶɧɵɣ ɧɨɦɟɪ CLSID ɤɨɦɩɨɧɟɧɬɚ.
ɉɪɢɦɟɱɚɧɢɟ 2.10.
Ɉɛɵɱɧɨ ɧɚɡɜɚɧɢɟ Co-ɤɥɚɫɫɨɜ ɧɚɱɢɧɚɟɬɫɹ ɫ ɩɪɟɮɢɤ-
ɫɚ «Co» ɢ ɩɨɯɨɠɟ ɧɚ ɧɚɡɜɚɧɢɟ ɤɨɦɩɨɧɟɧɬɚ, ɤɨɬɨɪɵɣ ɨɧɢ ɩɨɪɨɠɞɚɸɬ.
2.7. ɉɪɢɦɟɪ ɪɟɚɥɢɡɚɰɢɢ ɜɫɬɪɨɟɧɧɨɝɨ COM-ɫɟɪɜɟɪɚ
ȼ ɤɚɱɟɫɬɜɟ ɩɪɢɦɟɪɚ ɪɟɚɥɢɡɚɰɢɢ ɜɫɬɪɨɟɧɧɨɝɨ COM-ɫɟɪɜɟɪɚ ɫɨɡɞɚɞɢɦ
ɤɨɦɩɨɧɟɧɬ ɩɟɪɟɜɨɞɚ ɰɟɥɨɝɨ ɱɢɫɥɚ ɜ ɞɜɨɢɱɧɵɣ, ɜɨɫɶɦɟɪɢɱɧɵɣ ɢ ɲɟɫɬɧɚ-
ɞɰɚɬɟɪɢɱɧɵɣ ɜɢɞ, ɤɨɬɨɪɵɣ ɛɭɞɟɬ ɜɵɜɨɞɢɬɶɫɹ ɜ ɜɢɞɟ ɫɬɪɨɤɢ. Ⱦɚɧɧɵɣ ɤɨɦ-
ɩɨɧɟɧɬ ɛɭɞɟɬ ɩɨɞɞɟɪɠɢɜɚɬɶ ɢɧɬɟɪɮɟɣɫ, ɩɪɢɜɟɞɟɧɧɵɣ ɜ ɩɪɢɦɟɪɟ ɩ. 2.1.
1. ȼɵɩɨɥɧɢɜ ɞɟɣɫɬɜɢɹ, ɨɩɢɫɚɧɧɵɟ ɜ ɩ. 2.2, ɫɨɯɪɚɧɢɦ ɩɪɨɟɤɬ ɩɨɞ ɢɦɟɧɟɦ
Convert.dpr.
2
. Ɂɚɬɟɦ ɜɵɛɟɪɟɦ ɷɥɟɦɟɧɬ COM Object ɜ ɞɢɚɥɨɝɨɜɨɦ ɨɤɧɟ New Items
(ɩ. 2.3). ȼ ɦɚɫɬɟɪɟ COM Objeɫt Wizard ɨɬɤɥɸɱɢɦ ɨɩɰɢɢ
Include TypeLibrary ɢ Mark Interfaced Oleautomation. Ɂɚɩɨɥɧɢɦ ɫɨɨɬɜɟɬ-
ɫɬɜɭɸɳɢɟ ɩɨɥɹ: ɜ Class Name ɜɜɟɞɟɦ ObjConvert, ɚɜ Implemented inter-
faces – IConvert. ɇɚɠɚɜ ɧɚ ɤɧɨɩɤɭ OK, ɩɨɥɭɱɢɦ ɦɨɞɭɥɶ ɫɥɟɞɭɸɳɟɝɨ ɫɨ-
ɞɟɪɠɚɧɢɹ:
unit Unit1;
interface
uses
Windows, ActiveX, ComObj;
type
TObjConvert = class(TComObject, IConvert)
protected
{Declare IConvert methods here}
end;
const
Class_ObjConvert: TGUID = '{B65CC116-4C5F-11D5-8708-
854E82B6237}';
implementation
uses ComServ;
initialization
24
�� ������ ������, ����� ���������� �����������, ��� ���������� ������, ���� �����������, ��� ��������� ����� ������������� ���- �������� ���������� �� ������� ������ ���������� � ��������������� �����, �� ��� ���� ��������� Co-�����, ����� �� ��������� ���������� ��� ������� ������, ��� ��� ���� ������� ������� ����� ����� �� ���� ������� ���������� ����� CLSID ����������. ��� ������ � �������� ��������� �����������. �� �� ����� ���� ������� ������ ���� ��������� ���������� ����������� (ComServer), ������� ���������� 2.10. ������ �������� Co-������� ���������� � ������- ��������� � ���� ������ COM � �������� ������ ���� ���������� �����- �� «Co» � ������ �� �������� ����������, ������� ��� ���������. ��� ������ �������. ��������� ����������� ��������� �������� ���������� COM �� ��- 2.7. ������ ���������� ����������� COM-������� ���� �������� ������������ �������. ���� �� ������ ���������� �� ��- ��, �� �������� �� ��������� ���������������� ����� ������������ � �������� ������� ���������� ����������� COM-������� �������� ������, ����� ������� ������. �������� ���� ���������� ������� � ���, ��������� �������� ������ ����� � ��������, ������������ � ������- ����� �� ����������� ����������� �� ��, ��� ���������� ������, � ��- ����������� ���, ������� ����� ���������� � ���� ������. ������ ���- ��������� ������������� �������� ���� �� ��� ����, ��� ���� �� �����- ������ ����� ������������ ���������, ����������� � ������� �. 2.1. ������ �������� ����������. 1. �������� ��������, ��������� � �. 2.2, �������� ������ ��� ������ ���������� 2.9. ������� ��������, ��� ���������� COM ����� �� Convert.dpr. �������, ����� ���������� ���� ����������� � �������������� ���, 2. ����� ������� ������� COM Object � ���������� ���� New Items ������ ����� ������ �������� �������� �������. (�. 2.3). � ������� COM Obje�t Wizard �������� ����� ������ ������� ���������� �����������, ������� ������� ������ Include TypeLibrary � Mark Interfaced Oleautomation. �������� �������- �������� ����: � Class Name ������ ObjConvert, � � Implemented inter- ������ � ������ �������� ���������� ����������, ��� ������ ������� faces – IConvert. ����� �� ������ OK, ������� ������ ���������� ��- ����� � ������ ����������� ����������, ������� ���������� � �����- ������. ���� �������� ����������� ������ TClassFactory, ������������ ��������: ��� ���������� ������� �����������: unit Unit1; TClassFactory.Create(ComServer {����������� ��� ������� ������� interface � Delphi}, <��� ������>,, <����� �������� ������- ���� ����������>, <��� ������ ������� �����>); uses Windows, ActiveX, ComObj; ����� �������� ���������� ���������� � ��� ������ ������� ����� ������������� ��������������� �� ������ ������, ��������� � ������� type COM Object Wizard (���. 2.2). TObjConvert = class(TComObject, IConvert) ��� �������� ��������� � ������� ������ ������������ Co-������, protected ������� ������������ ��� �������: {Declare IConvert methods here} <��� Co-������> = class end; class function Create: <��������� ����������>; const class function CreateRemote(const MachineName: string): <�����- Class_ObjConvert: TGUID = '{B65CC116-4C5F-11D5-8708- ���� ����������>; 854E82B6237}'; end; implementation Create – ����������� ��� ��������� ������ ���������� ����������. CreateRemote – ������� ��������� ���������� �� ��������� ������ uses ComServ; (����������� � DCOM). initialization 23 24
Страницы
- « первая
- ‹ предыдущая
- …
- 10
- 11
- 12
- 13
- 14
- …
- следующая ›
- последняя »