ВУЗ:
Составители:
Ʉɥɢɟɧɬ ɢ ɫɟɪɜɟɪ ɞɨɥɠɧɵ ɫɨɞɟɪɠɚɬɶ ɨɞɢɧɚɤɨɜɨɟ ɨɩɢɫɚɧɢɟ ɢɧɬɟɪɮɟɣ-
ɫɨɜ. ɉɨɷɬɨɦɭ ɢɧɬɟɪɮɟɣɫ ɥɭɱɲɟ ɨɩɢɫɚɬɶ ɜ ɨɬɞɟɥɶɧɨɦ ɦɨɞɭɥɟ, ɤɨɬɨɪɵɣ
ɩɪɢɫɨɟɞɢɧɹɟɬɫɹ ɤ ɤɥɢɟɧɬɭ ɢ ɤ ɫɟɪɜɟɪɭ.
ɉɪɢɜɟɞɟɦ ɩɪɢɦɟɪ ɪɟɚɥɢɡɚɰɢɢ ɢɧɬɟɪɮɟɣɫɚ. ȼ ɞɚɧɧɨɦ ɩɪɢɦɟɪɟ ɨɩɢɫɚɧ
ɢɧɬɟɪɮɟɣɫ, ɫɨɞɟɪɠɚɳɢɣ ɬɪɢ ɮɭɧɤɰɢɢ ɩɟɪɟɜɨɞɚ ɰɟɥɨɝɨ ɱɢɫɥɚ ɜ ɞɜɨɢɱɧɵɣ,
ɜɨɫɶɦɟɪɢɱɧɵɣ ɢ ɲɟɫɬɧɚɞɰɚɬɟɪɢɱɧɵɣ ɜɢɞ, ɤɨɬɨɪɵɣ ɛɭɞɟɬ ɜɵɜɨɞɢɬɶɫɹ ɜ
ɜɢɞɟ ɫɬɪɨɤɢ.
1. Ɂɚɩɭɫɬɢɦ Delphi ɢ ɨɬɤɪɨɟɦ ɧɨɜɵɣ ɦɨɞɭɥɶ, ɜɵɛɪɚɜ ɜ ɦɟɧɸ
File/New. ȼ ɩɨɹɜɢɜɲɟɦɫɹ ɞɢɚɥɨɝɨɜɨɦ ɨɤɧɟ New Items ɧɚ ɡɚɤɥɚɞɤɟ
New ɜɵɛɟɪɟɦ ɷɥɟɦɟɧɬ Unit.
2. ɋɨɯɪɚɧɢɦ ɧɨɜɵɣ ɦɨɞɭɥɶ ɤɚɤ ConvertInterface.pas ɢ ɜ ɧɟɝɨ ɩɨɦɟɫ-
ɬɢɦ ɫɥɟɞɭɸɳɢɣ ɬɟɤɫɬ:
unit ConvertInterface;
interface
type
IConvert=interface
['{F1E9A4BA-4C4A-11D5-8D36-006008159451}']
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;
implementation
end.
2.2. Ɋɟɚɥɢɡɚɰɢɹ ɜɫɬɪɨɟɧɧɨɝɨ COM-ɫɟɪɜɟɪɚ
ȼɫɬɪɨɟɧɧɵɟ COM-ɫɟɪɜɟɪɵ ɪɟɚɥɢɡɨɜɚɧɵ ɜɧɭɬɪɢ ɦɨɞɭɥɟɣ DLL, ɩɨ-
ɷɬɨɦɭ ɨɧɢ ɜɵɩɨɥɧɹɸɬɫɹ ɜ ɩɪɨɰɟɫɫɟ ɩɪɢɥɨɠɟɧɢɹ, ɤɨɬɨɪɨɟ ɢɯ ɢɫɩɨɥɶɡɭɟɬ.
ȼɫɥɟɞɫɬɜɢɟ ɞɚɧɧɨɝɨ ɫɜɨɣɫɬɜɚ ɨɧɢ ɢ ɩɨɥɭɱɢɥɢ ɫɜɨɟ ɧɚɡɜɚɧɢɟ.
Ⱦɥɹ ɬɨɝɨ, ɱɬɨɛɵ ɫɨɡɞɚɬɶ ɜɫɬɪɨɟɧɧɵɣ COM-ɫɟɪɜɟɪ ɜ ɫɪɟɞɟ Delphi, ɧɟ-
ɨɛɯɨɞɢɦɨ ɜ ɝɥɚɜɧɨɦ ɦɟɧɸ ɜɵɛɪɚɬɶ File/New. ȼ ɩɨɹɜɢɜɲɟɦɫɹ ɞɢɚɥɨɝɨɜɨɦ
ɨɤɧɟ New Items ɨɬɤɪɵɬɶ ɡɚɤɥɚɞɤɭ ActiveX (ɪɢɫ. 2.1) ɢ ɜɵɛɪɚɬɶ ɷɥɟɦɟɧɬ
ActiveX Library.
15
Ɋɢɫ. 2.1. Ⱦɢɚɥɨɝɨɜɨɟ ɨɤɧɨ New Items ɧɚ ɡɚɤɥɚɞɤɟ ActiveX
ȼ ɛɢɛɥɢɨɬɟɤɭ ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɩɪɨɩɢɫɵɜɚɸɬɫɹ ɱɟɬɵɪɟ ɷɤɫɩɨɪɬɢɪɭɟ-
ɦɵɟ ɮɭɧɤɰɢɢ, ɪɟɚɥɢɡɨɜɚɧɧɵɟ ɜ ɦɨɞɭɥɟ ComServ:
function DllRegisterServer: HResult; stdcall; – ɢɫɩɨɥɶɡɭɟɬɫɹ ɞɥɹ ɪɟɝɢ-
ɫɬɪɚɰɢɢ COM-ɫɟɪɜɟɪɚ ɜ ɫɢɫɬɟɦɧɨɦ ɪɟɟɫɬɪɟ. ȿɫɥɢ ɪɟɝɢɫɬɪɚɰɢɹ ɩɪɨɲɥɚ ɭɫ-
ɩɟɲɧɨ, ɮɭɧɤɰɢɹ ɜɨɡɜɪɚɳɚɟɬ ɡɧɚɱɟɧɢɟ S_OK, ɢɧɚɱɟ S_FAIL.
function DllUnregisterServer: HResult; stdcall; – ɨɛɪɚɬɧɚɹ ɮɭɧɤɰɢɹ ɤ
DllRegisterServer: ɭɞɚɥɹɟɬ ɢɡ ɪɟɟɫɬɪɚ Windows ɜɫɟ ɷɥɟɦɟɧɬɵ, ɤɚɫɚɸɳɢɟɫɹ
ɫɨɨɬɜɟɬɫɬɜɭɸɳɟɝɨ ɤɨɦɩɨɧɟɧɬɚ. ȿɫɥɢ ɮɭɧɤɰɢɹ ɨɬɪɚɛɨɬɚɥɚ ɭɫɩɟɲɧɨ, ɬɨ
ɜɨɡɜɪɚɳɚɟɬɫɹ ɡɧɚɱɟɧɢɟ S_OK, ɢɧɚɱɟ S_FAIL.
function DllGetClassObject(const CLSID, IID: TGUID; var Obj):
HResult; stdcall; – ɋɨɡɞɚɟɬ ɧɨɜɵɣ ɤɨɦɩɨɧɟɧɬ ɫ ɧɨɦɟɪɨɦ CLSID ɢ ɜɵɞɚɟɬ
ɫɫɵɥɤɭ ɧɚ ɢɧɬɟɪɮɟɣɫ ɫ ɧɨɦɟɪɨɦ IID ɱɟɪɟɡ ɩɚɪɚɦɟɬɪ Obj. ȼɵɡɵɜɚɟɬɫɹ ɫɢɫ-
ɬɟɦɨɣ, ɪɟɚɥɢɡɭɸɳɟɣ ɚɪɯɢɬɟɤɬɭɪɭ COM. ȼ ɫɥɭɱɚɟ ɭɫɩɟɲɧɨɝɨ ɜɵɩɨɥɧɟɧɢɹ
ɮɭɧɤɰɢɹ ɜɨɡɜɪɚɳɚɟɬ ɡɧɚɱɟɧɢɟ: S_OK ɢɧɚɱɟ: E_NOINTERFACE – ɟɫɥɢ
ɢɧɬɟɪɮɟɣɫ ɧɟ ɧɚɣɞɟɧ ɢ CLASS_E_CLASSNOTAVAILABLE – ɤɨɦɩɨɧɟɧɬ
ɫ ɬɚɤɢɦ ɧɨɦɟɪɨɦ ɧɟ ɡɚɪɟɝɢɫɬɪɢɪɨɜɚɧ ɜ ɫɢɫɬɟɦɟ.
function DllCanUnloadNow: HResult; stdcall; – ɜɵɡɵɜɚɟɬɫɹ ɦɟɯɚɧɢɡ-
ɦɨɦ ɪɟɚɥɢɡɚɰɢɢ COM ɞɥɹ ɩɪɨɜɟɪɤɢ, ɜɵɩɨɥɧɹɸɬɫɹ ɥɢ ɭɫɥɨɜɢɹ ɭɞɚɥɟɧɢɹ
16
������ � ������ ������ ��������� ���������� �������� ��������- ���. ������� ��������� ����� ������� � ��������� ������, ������� �������������� � ������� � � �������. �������� ������ ���������� ����������. � ������ ������� ������ ���������, ���������� ��� ������� �������� ������ ����� � ��������, ������������ � ����������������� ���, ������� ����� ���������� � ���� ������. 1. �������� Delphi � ������� ����� ������, ������ � ���� File/New. � ����������� ���������� ���� New Items �� �������� New ������� ������� Unit. 2. �������� ����� ������ ��� ConvertInterface.pas � � ���� �����- ��� ��������� �����: unit ConvertInterface; interface type IConvert=interface ['{F1E9A4BA-4C4A-11D5-8D36-006008159451}'] function Bin (const n: Word; var Str: WideString): Boolean; stdcall; function Oct(const n: Word; var Str: WideString): Boolean; stdcall; ���. 2.1. ���������� ���� New Items �� �������� ActiveX function Hex(const n: Word; var Str: WideString): Boolean; stdcall; � ���������� ������������� ������������� ������ �����������- end; ��� �������, ������������� � ������ ComServ: implementation function DllRegisterServer: HResult; stdcall; – ������������ ��� ����- end. ������� COM-������� � ��������� �������. ���� ����������� ������ ��- �����, ������� ���������� �������� S_OK, ����� S_FAIL. function DllUnregisterServer: HResult; stdcall; – �������� ������� � DllRegisterServer: ������� �� ������� Windows ��� ��������, ���������� 2.2. ���������� ����������� COM-������� ���������������� ����������. ���� ������� ���������� �������, �� ������������ �������� S_OK, ����� S_FAIL. ���������� COM-������� ����������� ������ ������� DLL, ��- function DllGetClassObject(const CLSID, IID: TGUID; var Obj): ����� ��� ����������� � �������� ����������, ������� �� ����������. HResult; stdcall; – ������� ����� ��������� � ������� CLSID � ������ ���������� ������� �������� ��� � �������� ���� ��������. ������ �� ��������� � ������� IID ����� �������� Obj. ���������� ���- ��� ����, ����� ������� ���������� COM-������ � ����� Delphi, ��- �����, ����������� ����������� COM. � ������ ��������� ���������� �������� � ������� ���� ������� File/New. � ����������� ���������� ������� ���������� ��������: S_OK �����: E_NOINTERFACE – ���� ���� New Items ������� �������� ActiveX (���. 2.1) � ������� ������� ��������� �� ������ � CLASS_E_CLASSNOTAVAILABLE – ��������� ActiveX Library. � ����� ������� �� ��������������� � �������. function DllCanUnloadNow: HResult; stdcall; – ���������� �������- ��� ���������� COM ��� ��������, ����������� �� ������� �������� 15 16
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »