ВУЗ:
Составители:
1.2. Ɉɬɧɨɲɟɧɢɟ «Ʉɥɢɟɧɬ-ɫɟɪɜɟɪ»
ɉɭɫɬɶ ɩɪɢɥɨɠɟɧɢɸ ɬɪɟɛɭɟɬɫɹ ɫɨɜɟɪɲɢɬɶ ɤɚɤɨɟ-ɬɨ ɞɟɣɫɬɜɢɟ ɢɥɢ ɩɪɨ-
ɰɟɫɫ, ɤɨɬɨɪɵɣ ɟɦɭ ɧɟɢɡɜɟɫɬɟɧ. ɇɨ ɟɫɬɶ ɤɨɦɩɨɧɟɧɬ, ɧɚɯɨɞɹɳɢɣɫɹ ɜ ɞɪɭɝɨɦ
ɞɜɨɢɱɧɨɦ ɤɨɞɟ, ɤɨɬɨɪɵɣ ɦɨɠɟɬ ɷɬɨ ɞɟɣɫɬɜɢɟ ɢɥɢ ɩɪɨɰɟɫɫ ɫɨɜɟɪɲɢɬɶ. ȿɫ-
ɥɢ ɩɪɢɥɨɠɟɧɢɟ «ɡɧɚɟɬ» ɨ ɫɭɳɟɫɬɜɨɜɚɧɢɢ ɢ ɜɨɡɦɨɠɧɨɫɬɹɯ ɷɬɨɝɨ ɤɨɦɩɨ-
ɧɟɧɬɚ, ɬɨ ɨɧɨ «ɡɚɫɬɚɜɥɹɟɬ» ɤɨɦɩɨɧɟɧɬ ɜɵɩɨɥɧɢɬɶ ɫɨɨɬɜɟɬɫɬɜɭɸɳɟɟ
ɞɟɣɫɬɜɢɟ.
Ɍɚɤɨɟ ɜɡɚɢɦɨɞɟɣɫɬɜɢɟ ɩɪɢɥɨɠɟɧɢɹ ɢ ɤɨɦɩɨɧɟɧɬɚ ɧɚɡɵɜɚɸɬ ɨɬɧɨɲɟ-
ɧɢɟɦ «ɤɥɢɟɧɬ-ɫɟɪɜɟɪ», ɝɞɟ ɩɪɢɥɨɠɟɧɢɟ, ɢɝɪɚɸɳɟɟ ɪɨɥɶ ɢɧɢɰɢɚɬɨɪɚ, ɧɚ-
ɡɵɜɚɟɬɫɹ «ɤɥɢɟɧɬɨɦ», ɚ ɢɫɩɨɥɧɹɟɦɵɣ ɦɨɞɭɥɶ, ɯɪɚɧɹɳɢɣ ɤɨɦɩɨɧɟɧɬ, –
«ɫɟɪɜɟɪɨɦ».
ɋɭɳɟɫɬɜɭɟɬ ɞɜɚ ɬɢɩɚ COM-ɫɟɪɜɟɪɨɜ: ɜɫɬɪɨɟɧɧɵɟ, ɬɚɤɠɟ ɢɯ ɧɚɡɵɜɚ-
ɸɬ ɜɧɭɬɪɟɧɧɢɟ, ɢ ɜɧɟɲɧɢɟ. ȼɫɬɪɨɟɧɧɵɟ COM-ɫɟɪɜɟɪɵ ɷɬɨ ɞɢɧɚɦɢɱɟɫɤɢ
ɤɨɦɩɨɧɭɟɦɵɟ ɛɢɛɥɢɨɬɟɤɢ (DLL), ɤɨɬɨɪɵɟ ɩɪɢ ɡɚɝɪɭɡɤɟ ɜ ɩɚɦɹɬɶ ɤɨɦɩɶɸ-
ɬɟɪɚ ɨɬɨɛɪɚɠɚɸɬɫɹ ɧɚ ɚɞɪɟɫɧɨɟ ɩɪɨɫɬɪɚɧɫɬɜɨ COM-ɤɥɢɟɧɬɚ (ɩɪɨɝɪɚɦɦɵ).
ȼɧɟɲɧɢɟ COM-ɫɟɪɜɟɪɵ ɪɟɚɥɢɡɨɜɚɧɵ ɜ ɜɢɞɟ ɢɫɩɨɥɧɹɟɦɵɯ ɩɪɨɝɪɚɦɦ (exe-
ɮɚɣɥɨɜ), ɢ, ɫɥɟɞɨɜɚɬɟɥɶɧɨ, ɨɧɢ ɜ ɩɪɨɰɟɫɫɟ ɜɵɩɨɥɧɟɧɢɹ ɡɚɧɢɦɚɸɬ ɜ ɩɚɦɹ-
ɬɢ ɤɨɦɩɶɸɬɟɪɚ ɚɞɪɟɫɧɨɟ ɩɪɨɫɬɪɚɧɫɬɜɨ,
ɨɬɞɟɥɶɧɨɟ ɨɬ ɤɥɢɟɧɬɫɤɨɝɨ ɩɪɢɥɨ-
ɠɟɧɢɹ. ɗɬɨ ɩɪɢɜɨɞɢɬ ɤ ɧɟɤɨɬɨɪɵɦ ɧɸɚɧɫɚɦ ɩɪɢ ɫɨɡɞɚɧɢɢ ɬɚɤɨɝɨ ɪɨɞɚ
COM-ɫɟɪɜɟɪɨɜ, ɨ ɱɟɦ ɛɭɞɟɬ ɫɤɚɡɚɧɨ ɜ ɩ. 2.8.
1.3. ɍɧɢɤɚɥɶɧɨɫɬɶ ɤɨɦɩɨɧɟɧɬ. GUID, CLSID
ɑɬɨɛɵ ɩɪɢɥɨɠɟɧɢɟ ɦɨɝɥɨ ɫɜɹɡɚɬɶɫɹ ɫ ɤɨɦɩɨɧɟɧɬɨɦ, ɧɟɨɛɯɨɞɢɦɨ
ɡɧɚɬɶ ɢɦɹ ɨɛɴɟɤɬɚ. ɇɨ ɬɭɬ ɜɨɡɧɢɤɚɟɬ ɩɪɨɛɥɟɦɚ ɫɨɜɩɚɞɟɧɢɹ ɢɦɟɧ, ɬɚɤ ɤɚɤ
ɩɪɨɞɭɤɬɵ ɪɚɡɧɵɯ ɩɪɨɢɡɜɨɞɢɬɟɥɟɣ ɦɨɝɭɬ ɢɦɟɬɶ ɨɞɢɧɚɤɨɜɵɟ ɢɦɟɧɚ, ɚɫɥɟ-
ɞɨɜɚɬɟɥɶɧɨ, ɧɟ ɦɨɝɭɬ ɛɵɬɶ ɭɫɬɚɧɨɜɥɟɧɵ ɧɚ ɨɞɧɭ ɦɚɲɢɧɭ.
Ⱦɥɹ ɪɟɲɟɧɢɹ ɷɬɨɣ ɩɪɨɛɥɟɦɵ ɤɨɦɩɚɧɢɹ Microsoft ɪɚɡɪɚɛɨɬɚɥɚ ɢɞɟɸ
ɧɭɦɟɪɚɰɢɢ ɤɨɦɩɨɧɟɧɬɨɜ ɭɧɢɤɚɥɶɧɵɦɢ ɧɨɦɟɪɚɦɢ. ɗɬɨɬ ɧɨɦɟɪ ɧɚɡɵɜɚɟɬɫɹ
GUID (Globally Unique Identifier), ɱɬɨ ɨɡɧɚɱɚɟɬ ɝɥɨɛɚɥɶɧɨ ɭɧɢɤɚɥɶɧɵɣ
ɢɞɟɧɬɢɮɢɤɚɬɨɪ. GUID ɩɪɟɞɫɬɚɜɥɹɟɬ ɫɨɛɨɣ 16-ɛɚɣɬɧɨɟ ɱɢɫɥɨ, ɜɵɱɢɫɥɟɧ-
ɧɨɟ ɫɩɟɰɢɚɥɶɧɨɣ ɯɷɲ-ɮɭɧɤɰɢɟɣ, ɭɱɢɬɵɜɚɸɳɟɣ ɫɥɟɞɭɸɳɢɟ ɞɚɧɧɵɟ:
x ɬɟɤɭɳɢɟ ɞɚɬɭ ɢ ɜɪɟɦɹ;
x «ɬɢɤɢ ɬɚɣɦɟɪɚ»;
x ɩɪɨɫɬɨɣ ɢɧɤɪɟɦɟɧɬɧɵɣ ɫɱɟɬɱɢɤ, ɱɬɨɛɵ ɦɨɠɧɨ ɛɵɥɨ ɛɵ ɩɪɚɜɢɥɶɧɨ
ɨɛɪɚɛɚɬɵɜɚɬɶ ɫɥɟɞɭɸɳɢɟ ɨɱɟɧɶ ɱɚɫɬɨ ɡɚɩɪɨɫɵ ɧɚ ɝɟɧɟɪɚɰɢɸ
GUID;
x ɢɫɬɢɧɧɨ ɝɥɨɛɚɥɶɧɨ ɭɧɢɤɚɥɶɧɵɣ IEEE-ɢɞɟɧɬɢɮɢɤɚɬɨɪ ɦɚɲɢɧɵ,
ɢɡɜɥɟɤɚɟɦɵɣ ɢɡ ɫɟɬɟɜɨɣ ɤɚɪɬɵ. ȿɫɥɢ ɜ ɦɚɲɢɧɟ ɧɟɬ ɫɟɬɟɜɨɣ ɤɚɪɬɵ,
7
ɢɞɟɧɬɢɮɢɤɚɬɨɪ ɦɨɠɟɬ ɛɵɬɶ ɫɢɧɬɟɡɢɪɨɜɚɧ ɢɡ ɨɱɟɧɶ ɧɟɩɨɫɬɨɹɧɧɵɯ
ɦɚɲɢɧɧɵɯ ɯɚɪɚɤɬɟɪɢɫɬɢɤ.
ȼ ɫɨɜɪɟɦɟɧɧɵɯ ɫɪɟɞɚɯ ɪɚɡɪɚɛɨɬɤɢ ɩɪɢɥɨɠɟɧɢɣ, ɬɚɤɢɯ ɤɚɤ Delphi,
Visual Studio, ɪɟɚɥɢɡɨɜɚɧɵ ɫɪɟɞɫɬɜɚ ɚɜɬɨɦɚɬɢɱɟɫɤɨɝɨ ɩɨɥɭɱɟɧɢɹ ɭɧɢɤɚɥɶ-
ɧɨɝɨ ɧɨɦɟɪɚ ɱɟɪɟɡ API-ɮɭɧɤɰɢɸ CoCreateGuid.
ɉɪɢɦɟɱɚɧɢɟ 1.1.
ɑɬɨɛɵ ɩɨɥɭɱɢɬɶ GUID ɜ Delphi, ɧɚɞɨ ɧɚɠɚɬɶ
ɤɨɦɛɢɧɚɰɢɸ ɤɥɚɜɢɲ Ctrl+Shift+G. Ⱦɥɹ ɚɜɬɨɦɚɬɢɱɟɫɤɨɣ ɝɟɧɟɪɚɰɢɢ ɝɥɨ-
ɛɚɥɶɧɨɝɨ ɭɧɢɤɚɥɶɧɨɝɨ ɧɨɦɟɪɚ ɜ ɩɪɨɝɪɚɦɦɟ ɢɫɩɨɥɶɡɭɟɬɫɹ ɩɪɨɰɟɞɭɪɚ Co-
CreateGuid
ȼ ɩɪɨɝɪɚɦɦɟ GUID ɨɩɪɟɞɟɥɹɟɬɫɹ ɤɚɤ ɫɬɪɭɤɬɭɪɚ ɬɢɩɚ
TGUID=Record
D1: LongWord;
D2: Word;
D3: Word;
D4: array [0..7] of Byte;
End;
ɑɟɬɵɪɟ ɩɨɥɹ TGUID ɫɨɨɬɜɟɬɫɬɜɭɸɬ ɱɟɬɵɪɟɦ ɫɨɫɬɚɜɧɵɦ
16-ɛɚɣɬɧɨɝɨ ɱɢɫɥɚ. Ⱦɥɹ ɭɞɨɛɫɬɜɚ ɷɬɨ ɱɢɫɥɨ ɦɨɠɟɬ ɛɵɬɶ ɡɚɩɢɫɚɧɨ ɜ ɫɥɟ-
ɞɭɸɳɟɣ ɫɢɦɜɨɥɶɧɨɣ ɲɟɫɬɧɚɞɰɚɬɟɪɢɱɧɨɣ ɮɨɪɦɟ (ɤɚɠɞɚɹ ɲɟɫɬɧɚɞɰɚɬɟ-
ɪɢɱɧɚɹ ɰɢɮɪɚ ɡɚɦɟɧɟɧɚ ɫɢɦɜɨɥɨɦ X):
‘{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}’
ɉɪɢɦɟɪɵ ɡɚɩɢɫɢ GUID:
‘{168A8BE0-485B-11D5-B5D2-444553540000}’
‘{168A8BE1-485B-11D5-B5D2-444553540000}’
‘{168A8BE2-485B-11D5-B5D2-444553540000}’
Ⱦɥɹ ɩɪɟɨɛɪɚɡɨɜɚɧɢɹ ɫɢɦɜɨɥɶɧɨɝɨ ɩɪɟɞɫɬɚɜɥɟɧɢɹ GUID ɜ ɞɜɨɢɱɧɨɟ ɢ
ɨɛɪɚɬɧɨ ɜ Delphi ɪɟɚɥɢɡɨɜɚɧɵ ɫɥɟɞɭɸɳɢɟ ɫɢɫɬɟɦɧɵɟ ɮɭɧɤɰɢɢ:
function StringToGUID(const S: string): TGUID;
function GUIDToString(const ClassID: TGUID): string;
ɂɡ ɚɥɝɨɪɢɬɦɚ ɩɨɥɭɱɟɧɢɹ GUID ɢ ɪɚɡɦɟɪɧɨɫɬɢ ɱɢɫɥɚ ɜɢɞɧɨ, ɱɬɨ ɷɬɨɬ
ɧɨɦɟɪ ɞɟɣɫɬɜɢɬɟɥɶɧɨ ɭɧɢɤɚɥɶɧɵɣ. Ʉɚɠɞɵɣ ɤɨɦɩɨɧɟɧɬ ɞɨɥɠɟɧ ɢɦɟɬɶ
ɫɜɨɣ ɭɧɢɤɚɥɶɧɵɣ ɧɨɦɟɪ. ɗɬɨɬ ɧɨɦɟɪ ɧɚɡɵɜɚɸɬ CLSID (Class Identifier),
ɱɬɨ ɨɡɧɚɱɚɟɬ ɢɞɟɧɬɢɮɢɤɚɬɨɪ ɤɥɚɫɫɚ.
ɉɪɢɦɟɱɚɧɢɟ 1.2.
Ʉɨɝɞɚ ɢɫɩɨɥɶɡɭɟɬɫɹ GUID, ɫɨɫɬɚɜɥɟɧɧɵɣ ɢɡ ɨɱɟɧɶ
ɦɚɥɟɧɶɤɢɯ ɱɢɫɟɥ, ɷɬɨ, ɤɚɤ ɩɪɚɜɢɥɨ, ɹɜɥɹɟɬɫɹ ɩɪɢɡɧɚɤɨɦ ɩɪɢɧɚɞɥɟɠɧɨɫɬɢ
ɤɨɦɩɨɧɟɧɬɚ ɤ ɹɞɪɭ, ɪɚɡɪɚɛɨɬɚɧɧɨɦɭ Microsoft. GUID, ɫɝɟɧɟɪɢɪɨɜɚɧɧɵɟ
8
������������� ����� ���� ������������ �� ����� ������������ 1.2. ��������� «������-������» �������� �������������. � ����������� ������ ���������� ����������, ����� ��� Delphi, ����� ���������� ��������� ��������� �����-�� �������� ��� ���- Visual Studio, ����������� �������� ��������������� ��������� �������- ����, ������� ��� ����������. �� ���� ���������, ����������� � ������ ���� ������ ����� API-������� CoCreateGuid. �������� ����, ������� ����� ��� �������� ��� ������� ���������. ��- ���������� 1.1. ����� �������� GUID � Delphi, ���� ������ �� ���������� «�����» � ������������� � ������������ ����� �����- ���������� ������ Ctrl+Shift+G. ��� �������������� ��������� ���- �����, �� ��� «����������» ��������� ��������� ��������������� �������� ����������� ������ � ��������� ������������ ��������� Co- ��������. CreateGuid ����� �������������� ���������� � ���������� �������� ������- � ��������� GUID ������������ ��� ��������� ���� ���� «������-������», ��� ����������, �������� ���� ����������, ��- �������� «��������», � ����������� ������, �������� ���������, – TGUID=Record «��������». D1: LongWord; ���������� ��� ���� COM-��������: ����������, ����� �� ������- D2: Word; �� ����������, � �������. ���������� COM-������� ��� ����������� D3: Word; ����������� ���������� (DLL), ������� ��� �������� � ������ ������- D4: array [0..7] of Byte; ���� ������������ �� �������� ������������ COM-������� (���������). End; ������� COM-������� ����������� � ���� ����������� �������� (exe- ������), �, �������������, ��� � �������� ���������� �������� � ����- ������ ���� TGUID ������������� ������� ��������� �� ���������� �������� ������������, ��������� �� ����������� �����- 16-�������� �����. ��� �������� ��� ����� ����� ���� �������� � ���- �����. ��� �������� � ��������� ������� ��� �������� ������ ���� ������ ���������� ����������������� ����� (������ �����������- COM-��������, � ��� ����� ������� � �. 2.8. ������ ����� �������� �������� X): ‘{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}’ 1.3. ������������ ���������. GUID, CLSID ������� ������ GUID: ����� ���������� ����� ��������� � �����������, ���������� ‘{168A8BE0-485B-11D5-B5D2-444553540000}’ ����� ��� �������. �� ��� ��������� �������� ���������� ����, ��� ��� �������� ������ �������������� ����� ����� ���������� �����, � ���- ‘{168A8BE1-485B-11D5-B5D2-444553540000}’ ����������, �� ����� ���� ����������� �� ���� ������. ‘{168A8BE2-485B-11D5-B5D2-444553540000}’ ��� ������� ���� �������� �������� Microsoft ����������� ���� ��������� ����������� ����������� ��������. ���� ����� ���������� ��� �������������� ����������� ������������� GUID � �������� � GUID (Globally Unique Identifier), ��� �������� ��������� ���������� ������� � Delphi ����������� ��������� ��������� �������: �������������. GUID ������������ ����� 16-������� �����, ��������- function StringToGUID(const S: string): TGUID; ��� ����������� ���-��������, ����������� ��������� ������: �� ������� ���� � �����; function GUIDToString(const ClassID: TGUID): string; �� «���� �������»; �� ��������� ��������� GUID � ����������� ����� �����, ��� ���� �� ������� ������������ �������, ����� ����� ���� �� ��������� ����� ������������� ����������. ������ ��������� ������ ����� ������������ ��������� ����� ����� ������� �� ��������� ���� ���������� �����. ���� ����� �������� CLSID (Class Identifier), GUID; ��� �������� ������������� ������. �� ������� ��������� ���������� IEEE-������������� ������, ���������� 1.2. ����� ������������ GUID, ������������ �� ����� ����������� �� ������� �����. ���� � ������ ��� ������� �����, ��������� �����, ���, ��� �������, �������� ��������� �������������� ���������� � ����, �������������� Microsoft. GUID, ��������������� 7 8
Страницы
- « первая
- ‹ предыдущая
- …
- 2
- 3
- 4
- 5
- 6
- …
- следующая ›
- последняя »