Основы COM-технологий. Артемов М.А. и др. - 17 стр.

UptoLike

Составители: 

Cells[J,I] := IntToStr(B[I,J]);
except
on EOleException do
ShowMessage ('Com ɫɟɪɜɟɪ ɧɟɞɨɫɬɭɩɟɧ!');
else
ShowMessage ('ɑɬɨ-ɬɨ ɧɟ ɬɚɤ ...');
end;
end;
end;
end.
III. Ȼɢɛɥɢɨɬɟɤɚ ɬɢɩɨɜ
COM-ɫɟɪɜɟɪɵ ɢ ɤɥɢɟɧɬɵ, ɤɨɬɨɪɵɟ ɜɡɚɢɦɨɞɟɣɫɬɜɭɸɬ ɞɪɭɝ ɫ ɞɪɭɝɨɦ,
ɞɨɥɠɧɵ ɩɨɞɞɟɪɠɢɜɚɬɶ ɨɞɢɧɚɤɨɜɨɟ ɨɩɢɫɚɧɢɟ ɢɧɬɟɪɮɟɣɫɨɜ ɢ ɩɪɚɜɢɥɚ ɩɟ-
ɪɟɞɚɱɢ ɩɚɪɚɦɟɬɪɨɜ. Ʉɨɝɞɚ ɤɥɢɟɧɬɵ ɢ ɫɟɪɜɟɪɵ ɩɪɨɟɤɬɢɪɭɸɬɫɹ ɧɚ ɨɞɧɨɦ
ɹɡɵɤɟ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ, ɷɬɨɣ ɩɪɨɛɥɟɦɵ ɧɟ ɜɨɡɧɢɤɚɟɬ, ɬɚɤ ɤɚɤ ɦɨɠɧɨ
ɩɪɢɫɨɟɞɢɧɢɬɶ ɨɞɢɧ ɢ ɬɨɬ ɠɟ ɦɨɞɭɥɶ ɨɛɴɹɜɥɟɧɢɹ ɢɧɬɟɪɮɟɣɫɨɜ. ɑɬɨɛɵ ɪɚ-
ɛɨɬɚɬɶ ɧɟɡɚɜɢɫɢɦɨ ɨɬ ɹɡɵɤɚ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ, ɛɵɥɨ ɪɚɡɪɚɛɨɬɚɧɨ ɫɬɚɧ-
ɞɚɪɬɧɨɟ ɨɩɢɫɚɧɢɟ ɢɧɬɟɪɮɟɣɫɚ, ɤɨɬɨɪɨɟ ɧɚɡɵɜɚɸɬ ɛɢɛɥɢɨɬɟɤɨɣ ɬɢɩɨɜ.
Ȼɢɛɥɢɨɬɟɤɚ ɬɢɩɨɜ ɧɟɡɚɜɢɫɢɦɚ ɨɬ ɹɡɵɤɚ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ, ɢ ɜ ɩɪɨɟɤɬ ɨɧɚ
ɦɨɠɟɬ ɛɵɬɶ ɜɧɟɫɟɧɚ ɜ ɜɢɞɟ ɪɟɫɭɪɫɚ ɫ ɪɚɫɲɢɪɟɧɢɟɦ tlb.
3.1. ɉɪɨɟɤɬɢɪɨɜɚɧɢɟ ɛɢɛɥɢɨɬɟɤɢ ɬɢɩɨɜ.
Ɋɟɞɚɤɬɨɪ Type Library Editor
Ⱦɥɹ ɬɨɝɨ, ɱɬɨɛɵ ɛɢɛɥɢɨɬɟɤɭ ɬɢɩɨɜ ɩɨɞɤɥɸɱɢɬɶ ɤ ɪɚɡɪɚɛɚɬɵɜɚɟɦɨɦɭ
COM-ɫɟɪɜɟɪɭ ɚɜɬɨɦɚɬɢɱɟɫɤɢ, ɧɭɠɧɨ ɜ ɨɤɧɟ ɦɚɫɬɟɪɚ COM Object Wizard
(ɪɢɫ. 2.2) ɜɵɫɬɚɜɢɬɶ ɮɥɚɠɨɤ Include Type Library.
Ⱦɥɹ ɨɩɢɫɚɧɢɹ ɞɚɧɧɵɯ ɜ ɛɢɛɥɢɨɬɟɤɟ ɬɢɩɨɜ ɢɫɩɨɥɶɡɭɟɬɫɹ ɫɩɟɰɢɚɥɶɧɵɣ
ɹɡɵɤ IDL (Interface Definition Language – ɹɡɵɤ ɨɩɪɟɞɟɥɟɧɢɹ ɢɧɬɟɪɮɟɣɫɨɜ).
Ⱦɥɹ ɚɜɬɨɦɚɬɢɡɚɰɢɢ ɪɚɛɨɬɵ ɫ ɛɢɛɥɢɨɬɟɤɨɣ ɬɢɩɨɜ ɜ Delphi ɪɚɡɪɚɛɨɬɚɧ ɫɩɟ-
ɰɢɚɥɶɧɵɣ ɪɟɞɚɤɬɨɪ Type Library Editor (ɪɢɫ. 3.1), ɤɨɬɨɪɵɣ ɦɨɠɧɨ ɡɚɩɭɫ-
ɬɢɬɶ, ɜɵɛɪɚɜ ɜ ɝɥɚɜɧɨɦ ɦɟɧɸ Vew/Type Library Editor.
Ɉɤɧɨ Type Library Editor ɪɚɡɞɟɥɟɧɨ ɧɚ ɬɪɢ ɱɚɫɬɢ. ȼɜɟɪɯɭ ɪɚɫɩɨɥɨɠɟ-
ɧɚ ɩɚɧɟɥɶ ɢɧɫɬɪɭɦɟɧɬɨɜ, ɫ ɩɨɦɨɳɶɸ ɤɨɬɨɪɨɣ ɦɨɠɧɨ ɜɤɥɸɱɚɬɶ ɜ COM-
ɫɟɪɜɟɪ ɧɨɜɵɟ ɢɧɬɟɪɮɟɣɫɵ, ɦɟɬɨɞɵ ɢ ɫɜɨɣɫɬɜɚ. ɋɥɟɜɚ ɪɚɫɩɨɥɨɠɟɧɨ ɩɨɥɟ
ɫɩɢɫɤɚ ɨɛɴɟɤɬɨɜ, ɜ ɤɨɬɨɪɨɦ ɩɪɟɞɫɬɚɜɥɟɧɵ ɞɚɧɧɵɟ ɜ ɞɪɟɜɨɜɢɞɧɨɣ ɫɬɪɭɤ-
ɬɭɪɟ. ɋɩɪɚɜɚɩɚɧɟɥɶ ɫ ɡɚɤɥɚɞɤɚɦɢ, ɜ ɤɨɬɨɪɵɯ ɪɟɞɚɤɬɢɪɭɟɬɫɹ ɷɥɟɦɟɧɬ,
ɜɵɛɪɚɧɧɵɣ ɜ ɩɨɥɟ ɫɩɢɫɤɚ ɨɛɴɟɤɬɨɜ.
33
Ɋɢɫ. 3.1. Ɋɟɞɚɤɬɨɪ Type Library Editor
3.2. ɉɚɧɟɥɶ ɢɧɫɬɪɭɦɟɧɬɨɜ ɞɢɚɥɨɝɨɜɨɝɨ ɨɤɧɚ
Type Library Editor
Ɋɢɫ. 3.2. ɉɚɧɟɥɶ ɢɧɫɬɪɭɦɟɧɬɨɜ ɪɟɞɚɤɬɨɪɚ Type Library Editor
Ⱦɥɹ ɞɨɛɚɜɥɟɧɢɹ ɧɨɜɵɯ ɢɧɬɟɪɮɟɣɫɨɜ, ɫɜɨɣɫɬɜ ɢ ɦɟɬɨɞɨɜ ɢɫɩɨɥɶɡɭɟɬɫɹ
ɩɚɧɟɥɶ ɢɧɫɬɪɭɦɟɧɬɨɜ (ɪɢɫ. 3.2), ɤɨɬɨɪɚɹ ɫɨɞɟɪɠɢɬ ɫɥɟɞɭɸɳɢɟ ɮɭɧɤɰɢɨ-
ɧɚɥɶɧɵɟ ɤɧɨɩɤɢ (ɫɥɟɜɚ ɧɚɩɪɚɜɨ):
New Interface – ɩɨɫɥɟ ɳɟɥɱɤɚ ɧɚ ɷɬɨɣ ɤɧɨɩɤɟ ɛɭɞɟɬ ɞɨɛɚɜɥɟɧ ɧɨɜɵɣ
ɢɧɬɟɪɮɟɣɫ;
New Dispinterface – ɞɨɛɚɜɥɹɟɬ ɧɨɜɵɣ ɢɧɬɟɪɮɟɣɫ ɞɢɫɩɟɬɱɟɪɢɡɚɰɢɢ.
ɂɧɬɟɪɮɟɣɫ ɞɢɫɩɟɬɱɟɪɢɡɚɰɢɢ (dispinterface) ɜɨ ɦɧɨɝɨɦ ɫɯɨɠ ɫ ɨɛɵɱɧɵɦ
ɢɧɬɟɪɮɟɣɫɨɦ, ɧɨ ɢɫɩɨɥɶɡɭɟɬ ɨɬɥɢɱɧɵɣ ɨɬ ɧɟɝɨ ɦɟɯɚɧɢɡɦ ɞɢɫɩɟɬɱɟɪɢɡɚ-
ɰɢɢ ɞɥɹ ɜɵɡɨɜɚ ɦɟɬɨɞɨɜ ɫɟɪɜɟɪɚ (ɫɦ. ɝɥ. V);
New CoClass – ɞɨɛɚɜɥɹɟɬ ɫɨɩɪɹɠɟɧɧɵɣ ɤɥɚɫɫ. ɋɨɩɪɹɠɟɧɧɵɣ ɤɥɚɫɫ
(CoClass) – ɷɬɨ ɤɥɚɫɫ ɤɨɦɩɨɧɟɧɬɚ, ɜ ɤɨɬɨɪɨɦ ɪɟɚɥɢɡɨɜɚɧ ɢɧɬɟɪɮɟɣɫ (ɢɥɢ
ɢɧɬɟɪɮɟɣɫɵ);
34
         Cells[J,I] := IntToStr(B[I,J]);
    except
    on EOleException do
      ShowMessage ('Com ������ ����������!');
    else
      ShowMessage ('���-�� �� ��� ...');
   end;
  end;
end;

end.

                     III. ���������� �����
    COM-������� � �������, ������� ��������������� ���� � ������,
������ ������������ ���������� �������� ����������� � ������� ��-
������ ����������. ����� ������� � ������� ������������� �� �����
����� ����������������, ���� �������� �� ���������, ��� ��� �����
������������ ���� � ��� �� ������ ���������� �����������. ����� ��-
������ ���������� �� ����� ����������������, ���� ����������� ����-                         ���. 3.1. �������� Type Library Editor
������� �������� ����������, ������� �������� ����������� �����.
���������� ����� ���������� �� ����� ����������������, � � ������ ���
����� ���� ������� � ���� ������� � ����������� tlb.
                                                                                    3.2. ������ ������������ ����������� ����
                                                                                                Type Library Editor
            3.1. �������������� ���������� �����.
                  �������� Type Library Editor

    ��� ����, ����� ���������� ����� ���������� � ����������������
COM-������� �������������, ����� � ���� ������� COM Object Wizard                ���. 3.2. ������ ������������ ��������� Type Library Editor
(���. 2.2) ��������� ������ Include Type Library.                              ��� ���������� ����� �����������, ������� � ������� ������������
    ��� �������� ������ � ���������� ����� ������������ �����������        ������ ������������ (���. 3.2), ������� �������� ��������� �������-
���� IDL (Interface Definition Language – ���� ����������� �����������).   ������� ������ (����� �������):
��� ������������� ������ � ����������� ����� � Delphi ���������� ���-          New Interface – ����� ������ �� ���� ������ ����� �������� �����
�������� �������� Type Library Editor (���. 3.1), ������� ����� �����-     ���������;
����, ������ � ������� ���� Vew/Type Library Editor.                           New Dispinterface – ��������� ����� ��������� ���������������.
     ���� Type Library Editor ��������� �� ��� �����. ������ ���������-    ��������� ��������������� (dispinterface) �� ������ ���� � �������
�� ������ ������������, � ������� ������� ����� �������� � COM-            �����������, �� ���������� �������� �� ���� �������� ������������-
������ ����� ����������, ������ � ��������. ����� ����������� ����         ��� ��� ������ ������� ������� (��. ��. V);
������ ��������, � ������� ������������ ������ � ����������� �����-            New CoClass – ��������� ����������� �����. ����������� �����
����. ������ – ������ � ����������, � ������� ������������� �������,       (CoClass) – ��� ����� ����������, � ������� ���������� ��������� (���
��������� � ���� ������ ��������.                                          ����������);


                                   33                                                                        34