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

UptoLike

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

else raise Exception.Create('Ɉɲɢɛɤɚ ɜ BinClick');
end;
procedure TForm1.OctClick(Sender: TObject);
var str: WideString;
begin
if Convert.Hex(StrToInt(Edit1.Text),Str) then ShowMessage(Str)
else raise Exception.Create('Ɉɲɢɛɤɚ ɜ OctClick');
end;
procedure TForm1.HexClick(Sender: TObject);
var str: WideString
begin
if Convert.Hex(StrToInt(Edit1.Text),Str) then ShowMessage(Str)
else raise Exception.Create('Ɉɲɢɛɤɚ ɜ HexClick');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//ɪɚɡɪɵɜ ɫ ɫɫɵɥɤɨɣ. ɋɱɟɬɱɢɤ ɭɦɟɧɶɲɚɟɬɫɹ ɧɚ ɟɞɢɧɢɰɭ
Convert:=nil;
end;
end.
V. Ⱥɜɬɨɦɚɬɢɡɚɰɢɹ
Ⱥɜɬɨɦɚɬɢɡɚɰɢɹ (Automation) ɩɪɟɞɫɬɚɜɥɹɟɬ ɫɨɛɨɣ ɦɟɯɚɧɢɡɦ ɚɜɬɨɦɚ-
ɬɢɱɟɫɤɨɝɨ ɭɩɪɚɜɥɟɧɢɹ ɨɞɧɢɦ ɩɪɢɥɨɠɟɧɢɟɦ ɢɡ ɞɪɭɝɨɝɨ. ɋɭɳɟɫɬɜɭɸɬ ɤɚɤ
ɜɫɬɪɨɟɧɧɵɟ ɫɟɪɜɟɪɵ ɚɜɬɨɦɚɬɢɡɚɰɢɢ, ɬɚɤ ɢ ɜɧɟɲɧɢɟ.
ȼ ɫɪɟɞɟ Delphi ɥɟɝɤɨ ɫɨɡɞɚɜɚɬɶ ɢ ɢɫɩɨɥɶɡɨɜɚɬɶ ɫɟɪɜɟɪɵ ɚɜɬɨɦɚɬɢɡɚ-
ɰɢɢ, ɢɦɟɹ ɜɟɫɶɦɚ ɫɥɚɛɨɟ ɩɪɟɞɫɬɚɜɥɟɧɢɟ ɨ ɩɪɢɧɰɢɩɚɯ COM-ɬɟɯɧɨɥɨɝɢɢ.
5.1. Ɋɚɧɧɟɟ ɢ ɩɨɡɞɧɟɟ ɫɜɹɡɵɜɚɧɢɟ. Ɍɢɩ Variant
ɑɬɨɛɵ ɩɨɥɭɱɢɬɶ ɞɨɫɬɭɩ ɤ ɢɧɬɟɪɮɟɣɫɭ ɤɨɦɩɨɧɟɧɬɚ ɚɜɬɨɦɚɬɢɡɚɰɢɢ ɧɟ-
ɨɛɹɡɚɬɟɥɶɧɨ ɢɫɩɨɥɶɡɨɜɚɬɶ ɨɩɢɫɚɧɢɟ ɢɧɬɟɪɮɟɣɫɚ. ȼ Delphi ɟɫɬɶ ɜɨɡɦɨɠ-
ɧɨɫɬɶ ɢɫɩɨɥɶɡɨɜɚɬɶ ɢɧɬɟɪɮɟɣɫ ɛɟɡ ɟɝɨ ɨɩɢɫɚɧɢɹ. ȼ ɷɬɨɦ ɫɥɭɱɚɟ ɫɫɵɥɤɚ ɧɚ
ɢɧɬɟɪɮɟɣɫ ɫɨɡɞɚɜɚɟɦɨɝɨ ɤɨɦɩɨɧɟɧɬɚ ɯɪɚɧɢɬɫɹ ɜ ɩɟɪɟɦɟɧɧɨɣ ɬɢɩɚ Variant.
ȼ ɷɬɨɦ ɫɥɭɱɚɟ ɤɨɦɩɢɥɹɬɨɪ ɧɟ ɩɪɨɜɟɪɹɟɬ ɤɨɪɪɟɤɬɧɨɫɬɶ ɨɛɪɚɳɟɧɢɣ ɤ ɢɧ-
ɬɟɪɮɟɣɫɭ. Ʉɨɪɪɟɤɬɧɨɫɬɶ ɩɪɨɜɟɪɹɟɬɫɹ ɬɨɥɶɤɨ ɭɠɟ ɧɚ ɫɬɚɞɢɢ ɜɵɩɨɥɧɟɧɢɹ
ɩɪɨɝɪɚɦɦɵ. Ɍɚɤɨɣ ɦɟɬɨɞ ɧɚɡɵɜɚɸɬ ɦɟɬɨɞɨɦ ɩɨɡɞɧɟɝɨ ɫɜɹɡɵɜɚɧɢɹ.
43
ɇɢɠɟ ɩɪɢɜɟɞɟɧ ɩɪɢɦɟɪ ɩɪɨɝɪɚɦɦɧɨɝɨ ɤɨɞɚ, ɜ ɤɨɬɨɪɨɦ ɨɪɝɚɧɢɡɭɟɬɫɹ
ɩɨɞɤɥɸɱɟɧɢɟ ɤ Microsoft Word ɢ ɟɦɭ ɩɟɪɟɞɚɟɬɫɹ ɤɨɦɚɧɞɚ ɫɮɨɪɦɢɪɨɜɚɬɶ
ɧɨɜɵɣ ɮɚɣɥ:
procedure TForm1.Button1.Click(sender: TObject);
var V: Variant;
begin
V:=CreateOLEObject(‘Word.Basic’);
V.AppShow;
V.FileNew;
V.Insert(‘Ⱥɜɬɨɦɚɬɢɡɚɰɢɹ ɷɬɨ ɩɪɨɫɬɨ!’);
V:=NULL;
end;
ɉɪɢɦɟɱɚɧɢɟ 5.1.
ɉɪɢ ɨɛɧɭɥɟɧɢɢ ɬɢɩɢɡɢɪɨɜɚɧɧɨɣ ɫɫɵɥɤɢ ɧɚ ɢɧɬɟɪ-
ɮɟɣɫ ɢɫɩɨɥɶɡɭɟɬɫɹ nil, ɚ ɩɪɢ ɨɛɧɭɥɟɧɢɢ ɫɫɵɥɤɢ ɬɢɩɚ Variant – NULL.
ɉɪɢ ɩɨɡɞɧɟɦ ɫɜɹɡɵɜɚɧɢɢ ɤɨɦɩɢɥɹɬɨɪ Delphi ɩɪɢɧɢɦɚɟɬ ɜɫɟ ɛɟɡ ɜɨɡ-
ɪɚɠɟɧɢɣ ɢ ɧɟ ɜɵɩɨɥɧɹɟɬ ɤɨɧɬɪɨɥɶ ɤɨɪɪɟɤɬɧɨɫɬɢ ɬɢɩɨɜ, ɧɨ ɩɪɢ ɜɵɡɨɜɟ ɧɟ-
ɫɭɳɟɫɬɜɭɸɳɢɯ ɦɟɬɨɞɨɜ ɜɨ ɜɪɟɦɹ ɜɵɩɨɥɧɟɧɢɹ ɩɪɨɝɪɚɦɦɵ ɩɨɹɜɥɹɟɬɫɹ ɫɨ-
ɨɛɳɟɧɢɟ ɨɛ ɨɲɢɛɤɟ (ɪɢɫ. 5.1).
Ɋɢɫ. 5.1. ɋɨɨɛɳɟɧɢɟ ɨɛ ɨɲɢɛɤɟ ɩɪɢ ɨɛɪɚɳɟɧɢɢ ɤ ɧɟɫɭɳɟɫɬɜɭɸɳɟɦɭ
ɦɟɬɨɞɭ ɫɟɪɜɟɪɚ ɚɜɬɨɦɚɬɢɡɚɰɢɢ
Ɇɟɬɨɞ ɪɚɛɨɬɵ ɫ ɤɨɦɩɨɧɟɧɬɨɦ, ɤɨɝɞɚ ɢɫɩɨɥɶɡɭɟɬɫɹ ɨɩɢɫɚɧɢɟ ɟɝɨ ɢɧ-
ɬɟɪɮɟɣɫɚ, ɧɚɡɵɜɚɸɬ ɦɟɬɨɞɨɦ ɪɚɧɧɟɝɨ ɫɜɹɡɵɜɚɧɢɹ. ȼ ɷɬɨɦ ɫɥɭɱɚɟ ɤɨɪ-
ɪɟɤɬɧɨɫɬɶ ɪɚɛɨɬɵ ɜɵɡɨɜɚ ɩɪɨɰɟɞɭɪ ɩɪɨɜɟɪɹɟɬɫɹ ɧɚ ɫɬɚɞɢɢ ɤɨɦɩɢɥɹɰɢɢ
ɩɪɨɝɪɚɦɦɵ.
ɇɟɞɨɫɬɚɬɨɤ ɩɨɡɞɧɟɝɨ ɫɜɹɡɵɜɚɧɢɹɡɚɦɟɞɥɟɧɧɨɟ ɨɛɪɚɳɟɧɢɟ ɤ ɤɨɦɩɨ-
ɧɟɧɬɭ, ɬɚɤ ɤɚɤ ɫɢɫɬɟɦɚ COM ɩɵɬɚɟɬɫɹ ɧɚɣɬɢ ɜɵɡɵɜɚɟɦɭɸ ɩɪɨɰɟɞɭɪɭ ɢɥɢ
ɮɭɧɤɰɢɸ ɩɨ ɢɦɟɧɢ. ɇɨ ɜ ɩɪɨɬɢɜɨɜɟɫ ɧɟɞɨɫɬɚɬɤɚɦ ɫɭɳɟɫɬɜɭɸɬ ɪɹɞ ɩɪɟ-
ɢɦɭɳɟɫɬɜ ɞɚɧɧɨɝɨ ɦɟɬɨɞɚ:
1) ɢɧɨɝɞɚ ɩɪɨɝɪɚɦɦɵ ɢɥɢ ɦɚɤɪɨɫɵ ɪɚɡɪɚɛɚɬɵɜɚɸɬɫɹ ɜ ɫɪɟɞɟ, ɤɨɬɨɪɚɹ ɧɟ
ɩɨɞɞɟɪɠɢɜɚɟɬ ɢɧɬɟɪɮɟɣɫɨɜ (ɧɚɩɪɢɦɟɪ, Visual Basic) ɢɬ. ɩ;
44
                  else raise Exception.Create('������ � BinClick');          ���� �������� ������ ������������ ����, � ������� ������������
end;                                                                     ����������� � Microsoft Word � ��� ���������� ������� ������������
                                                                         ����� ����:
procedure TForm1.OctClick(Sender: TObject);
                                                                             procedure TForm1.Button1.Click(sender: TObject);
var str: WideString;
                                                                             var V: Variant;
begin
   if Convert.Hex(StrToInt(Edit1.Text),Str) then ShowMessage(Str)            begin
                 else raise Exception.Create('������ � OctClick');              V:=CreateOLEObject(‘Word.Basic’);
end;                                                                            V.AppShow;
                                                                                V.FileNew;
procedure TForm1.HexClick(Sender: TObject);                                     V.Insert(‘������������� ��� ������!’);
                                                                                V:=NULL;
var str: WideString
                                                                             end;
begin
                                                                             ���������� 5.1. ��� ��������� �������������� ������ �� �����-
   if Convert.Hex(StrToInt(Edit1.Text),Str) then ShowMessage(Str)
                                                                         ���� ������������ nil, � ��� ��������� ������ ���� Variant – NULL.
                 else raise Exception.Create('������ � HexClick');
end;                                                                         ��� ������� ���������� ���������� Delphi ��������� ��� ��� ���-
                                                                         ������� � �� ��������� �������� ������������ �����, �� ��� ������ ��-
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
                                                                         ������������ ������� �� ����� ���������� ��������� ���������� ��-
begin
                                                                         ������� �� ������ (���. 5.1).
   //������ � �������. ������� ����������� �� �������
   Convert:=nil;
end;
end.
                         V. �������������
     ������������� (Automation) ������������ ����� �������� ������-
��������� ���������� ����� ����������� �� �������. ���������� ���
���������� ������� �������������, ��� � �������.                           ���. 5.1. ��������� �� ������ ��� ��������� � ���������������
     � ����� Delphi ����� ��������� � ������������ ������� ����������-                       ������ ������� �������������
���, ���� ������ ������ ������������� � ��������� COM-����������.
                                                                             ����� ������ � �����������, ����� ������������ �������� ��� ��-
         5.1. ������ � ������� ����������. ��� Variant                   ��������, �������� ������� ������� ����������. � ���� ������ ���-
                                                                         ��������� ������ ������ �������� ����������� �� ������ ����������
    ����� �������� ������ � ���������� ���������� ������������� ��-      ���������.
����������� ������������ �������� ����������. � Delphi ���� ������-          ���������� �������� ���������� – ����������� ��������� � �����-
����� ������������ ��������� ��� ��� ��������. � ���� ������ ������ ��   �����, ��� ��� ������� COM �������� ����� ���������� ��������� ���
��������� ������������ ���������� �������� � ���������� ���� Variant.    ������� �� �����. �� � ���������� ����������� ���������� ��� ���-
� ���� ������ ���������� �� ��������� ������������ ��������� � ��-       �������� ������� ������:
��������. ������������ ����������� ������ ��� �� ������ ����������         1) ������ ��������� ��� ������� ��������������� � �����, ������� ��
���������. ����� ����� �������� ������� �������� ����������.                  ������������ ����������� (��������, Visual Basic) � �. �;


                                     43                                                                    44