ВУЗ:
Составители:
W:=V; //ɫɱɟɬɱɢɤ ɫɫɵɥɨɤ ɭɜɟɥɢɱɢɥɫɹ ɢ ɪɚɜɟɧ 2
<……………………….>
V:=nil; //ɫɱɟɬɱɢɤ ɫɫɵɥɨɤ ɭɦɟɧɶɲɢɥɫɹ ɢ ɪɚɜɟɧ 1
W:=nil; //ɫɱɟɬɱɢɤ ɫɫɵɥɨɤ ɭɦɟɧɶɲɢɥɫɹ, ɢ ɨɛɴɟɤɬ ɭɞɚɥɢɥɫɹ
Ɂɚɦɟɱɚɧɢɟ 4.1.
ȼɫɟɝɞɚ ɩɪɢɫɜɚɢɜɚɣɬɟ ɫɫɵɥɤɚɦ ɧɚ ɤɨɦɩɨɧɟɧɬ ɡɧɚɱɟ-
ɧɢɟ nil, ɱɬɨɛɵ ɭɦɟɧɶɲɢɬɶ ɫɱɟɬɱɢɤ ɫɫɵɥɨɤ ɢ ɫɜɨɟɜɪɟɦɟɧɧɨ ɜɵɝɪɭɡɢɬɶ
ɤɨɦɩɨɧɟɧɬ ɢɡ ɩɚɦɹɬɢ.
Ɍɚɤ ɠɟ, ɤɚɤ ɢ ɜ ɤɥɚɫɫɚɯ, ɦɨɠɧɨ ɩɨɥɭɱɢɬɶ ɢɧɬɟɪɮɟɣɫ ɨɛɴɟɤɬɚ ɫ ɩɨɦɨ-
ɳɶɸ ɨɩɟɪɚɬɨɪɚ as:
V:=CreateComObject(GUID);
W:=V as ISomeInterface; //ɚɧɚɥɨɝɢɱɧɨ V.QueryInterface(IID,W)
ȼ ɩɚɤɟɬɟ Delphi ɩɨɫɬɚɜɥɹɟɬɫɹ ɫɩɟɰɢɚɥɶɧɚɹ ɭɬɢɥɢɬɚ ɞɥɹ ɪɟɝɢɫɬɪɚɰɢɢ
COM-ɫɟɪɜɟɪɨɜ ɢ ɛɢɛɥɢɨɬɟɤɢ ɬɢɩɨɜ tregsvr.exe. Ɉɛɵɱɧɨ ɷɬɚ ɭɬɢɥɢɬɚ ɧɚɯɨ-
ɞɢɬɫɹ ɜ ɩɚɩɤɟ Delphi\Bin.
4.4. ɉɪɢɦɟɪ ɪɟɚɥɢɡɚɰɢɢ COM-ɤɥɢɟɧɬɚ
ɉɪɢɜɟɞɟɦ ɩɪɢɦɟɪ ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɜɫɬɪɨɟɧɧɨɝɨ COM-ɫɟɪɜɟɪɚ, ɫɨɡɞɚɧ-
ɧɨɝɨ ɜ ɬɪɟɬɶɟɣ ɱɚɫɬɢ.
1. ɋɨɡɞɚɣɬɟ ɜɫɬɪɨɟɧɧɵɣ COM-ɫɟɪɜɟɪ ɢɡ ɩɪɢɦɟɪɚ ɜ ɬɪɟɬɶɟɣ ɱɚɫɬɢ. Ɂɚɪɟ-
ɝɢɫɬɪɢɪɭɣɬɟ ɟɝɨ, ɤɚɤ ɧɚɩɢɫɚɧɨ ɜ ɩɟɪɜɨɣ ɱɚɫɬɢ ɲɟɫɬɨɝɨ ɩɭɧɤɬɚ.
2. Ɉɬɤɪɨɣɬɟ ɧɨɜɵɣ ɩɪɨɟɤɬ ɜ Delphi.
3. Ɉɬɤɪɨɣɬɟ ɞɢɚɥɨɝɨɜɨɟ ɨɤɧɨ ɢɦɩɨɪɬɚ ɛɢɛɥɢɨɬɟɤɢ ɬɢɩɨɜ (ɪɢɫ. 4.1) ɢ
ɧɚɣɞɢɬɟ ɛɢɛɥɢɨɬɟɤɭ ɧɚɲɟɝɨ COM-ɫɟɪɜɟɪɚ. ȿɫɥɢ CɈɆ-ɫɟɪɜɟɪ ɧɚɡɵ-
ɜɚɟɬɫɹ Convert.dll, ɬɨ ɜ ɫɩɢɫɤɟ ɛɭɞɟɬ ɫɬɪɨɤɚ Convert Library (Version
1.0). ɂɦɩɨɪɬɢɪɭɣɬɟ ɟɟ.
4. ɇɚ ɮɨɪɦɭ ɩɨɫɬɚɜɶɬɟ ɫɬɪɨɤɭ ɜɜɨɞɚ TEdit ɢ ɬɪɢ ɤɧɨɩɤɢ Bin, Oct, Hex
(ɪɢɫ. 4.2).
Ɋɢɫ. 4.2. Ɏɨɪɦɚ ɩɪɢɦɟɪɚ
5. ȼ ɫɨɨɬɜɟɬɫɬɜɭɸɳɟɦ ɮɨɪɦɟ ɦɨɞɭɥɟ ɧɚɛɟɪɢɬɟ ɫɥɟɞɭɸɳɢɣ ɬɟɤɫɬ:
unit Unit1;
interface
41
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dia-
logs, StdCtrls, Convert_TLB;
type
TForm1 = class(TForm)
Edit1: TEdit;
Bin: TButton;
Oct: TButton;
Hex: TButton;
procedure FormCreate(Sender: TObject);
procedure BinClick(Sender: TObject);
procedure OctClick(Sender: TObject);
procedure HexClick(Sender: TObject);
private
{ Private declarations }
Convert: IConvert;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
//ɫɨɡɞɚɟɬɫɹ ɷɤɡɟɦɩɥɹɪ Ʉɨɦɩɨɧɟɧɬɚ
Convert:=nil;
Convert:=CoObjConvert.Create;
if not Assigned(Convert) then
begin
ShowMessage('ɇɟ ɜɨɡɦɨɠɧɨ ɫɨɡɞɚɬɶ ɤɨɦɩɨɧɟɧɬ');
Close;
end;
end;
procedure TForm1.BinClick(Sender: TObject);
var str: WideString;
begin
if Convert.Bin(StrToInt(Edit1.Text),Str) then ShowMessage(Str)
42
W:=V; //������� ������ ���������� � ����� 2 uses <……………………….> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dia- logs, StdCtrls, Convert_TLB; V:=nil; //������� ������ ���������� � ����� 1 W:=nil; //������� ������ ����������, � ������ �������� type TForm1 = class(TForm) ��������� 4.1. ������ ������������ ������� �� ��������� �����- Edit1: TEdit; ��� nil, ����� ��������� ������� ������ � ������������ ��������� Bin: TButton; ��������� �� ������. Oct: TButton; ��� ��, ��� � � �������, ����� �������� ��������� ������� � ����- Hex: TButton; ��� ��������� as: procedure FormCreate(Sender: TObject); V:=CreateComObject(GUID); procedure BinClick(Sender: TObject); W:=V as ISomeInterface; //���������� V.QueryInterface(IID,W) procedure OctClick(Sender: TObject); procedure HexClick(Sender: TObject); � ������ Delphi ������������ ����������� ������� ��� ����������� private COM-�������� � ���������� ����� tregsvr.exe. ������ ��� ������� ����- { Private declarations } ����� � ����� Delphi\Bin. Convert: IConvert; public 4.4. ������ ���������� COM-������� { Public declarations } end; �������� ������ ������������� ����������� COM-�������, ������- var ���� � ������� �����. Form1: TForm1; 1. �������� ���������� COM-������ �� ������� � ������� �����. ����- ����������� ���, ��� �������� � ������ ����� ������� ������. implementation 2. �������� ����� ������ � Delphi. 3. �������� ���������� ���� ������� ���������� ����� (���. 4.1) � {$R *.DFM} ������� ���������� ������ COM-�������. ���� C��-������ ����- procedure TForm1.FormCreate(Sender: TObject); ������ Convert.dll, �� � ������ ����� ������ Convert Library (Version begin 1.0). ������������ ��. //��������� ��������� ���������� 4. �� ����� ��������� ������ ����� TEdit � ��� ������ Bin, Oct, Hex Convert:=nil; (���. 4.2). Convert:=CoObjConvert.Create; if not Assigned(Convert) then begin ShowMessage('�� �������� ������� ���������'); Close; end; end; ���. 4.2. ����� ������� procedure TForm1.BinClick(Sender: TObject); 5. � ��������������� ����� ������ �������� ��������� �����: var str: WideString; unit Unit1; begin interface if Convert.Bin(StrToInt(Edit1.Text),Str) then ShowMessage(Str) 41 42
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »