ВУЗ:
Составители:
25
ws:=ws+#13;
S.TypeText(ws);
with Table1 do while not Eof do begin
j:=j+1;
ws:=IntToStr(j)+'.';
for i:=0 to FieldCount-1 do
ws:=ws+#9+Fields.Fields[i].AsString;
ws:=ws+#13;
S.TypeText(ws);
Next
end;
PosEnd := S.Start;
Table1.Close; v1:=#9; v2:=True; v3:=1;
D.Range(PosBeg,PosEnd).
ConvertToTable(v1,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
v2,v3,v3)
end;
Если теперь построить проект и запустить приложение, результат его ра-
боты будет тем же, что и при работе клиента через Variant. Тем не менее, за-
траченные усилия окупаются как в процессе разработки приложения (раннее
связывание безопаснее, поскольку выявляются ошибки при компиляции и ком -
поновке), так и в режиме выполнения (эффективен доступ к сервисам объектов
автоматизации).
Раннее связывание через диспинтерфейс
В данном разделе рассмотрен способ обращения к свойствам и методам
диспинтерфейса через IDispatch:Invoke, использующий так же, как преды-
дущий , информацию из библиотеки типов и раннее связывание. Оба эти меха-
низма управления сервером Microsoft Word стали возможными, благодаря тому,
что большинство экспортируемых интерфейсов являются дуальными. Способ,
описываемый ниже, по эффективности занимает промежуточное положение
между обращением через виртуальную таблицу интерфейса (как показано в
предыдущем разделе) и управлением с использованием Variant (динамиче-
ское связывание через диспинтерфейс). Поэтому материал , приводимый ниже,
необходим как иллюстрация работы с серверами автоматизации, имеющими
только диспинтерфейсы : при наличии дуальных интерфейсов предпочтение,
очевидно, следует отдавать их виртуальным таблицам .
Вернувшись к рассмотрению модуля Word_TLB, построенного в резуль-
тате импорта библиотеки типов Microsoft Word, можно заметить, что все ин -
терфейсы , импортированные из дуальных интерфейсов библиотеки, имеют
«двойников» . Например , использованный ранее интерфейс _Application
(часть его описания приводится выше по тексту ) сопровождается следующим
фрагментом (в сильном сокращении):
25 ws:=ws+#13; S.TypeText(ws); with Table1 do while not Eof do begin j:=j+1; ws:=IntToStr(j)+'.'; for i:=0 to FieldCount-1 do ws:=ws+#9+Fields.Fields[i].AsString; ws:=ws+#13; S.TypeText(ws); Next end; PosEnd := S.Start; Table1.Close; v1:=#9; v2:=True; v3:=1; D.Range(PosBeg,PosEnd). ConvertToTable(v1,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, v2,v3,v3) end; Если теперь построить проект и запустить приложение, результат его ра- боты будет тем же, что и при работе клиента через Variant. Тем не менее, за- траченные усилия окупаются как в процессе разработки приложения (раннее связывание безопаснее, поскольку выявляются ошибки при компиляции и ком- поновке), так и в режиме выполнения (эффективен доступ к сервисам объектов автоматизации). Раннее связывание через диспинтерфейс В данном разделе рассмотрен способ обращения к свойствам и методам диспинтерфейса через IDispatch:Invoke , использующий так же, как преды- дущий, информацию из библиотеки типов и раннее связывание. Оба эти меха- низма управления сервером Microsoft Word стали возможными, благодаря тому, что большинство экспортируемых интерфейсов являются дуальными. Способ, описываемый ниже, по эффективности занимает промежуточное положение между обращением через виртуальную таблицу интерфейса (как показано в предыдущем разделе) и управлением с использованием Variant (динамиче- ское связывание через диспинтерфейс). Поэтому материал, приводимый ниже, необходим как иллюстрация работы с серверами автоматизации, имеющими только диспинтерфейсы: при наличии дуальных интерфейсов предпочтение, очевидно, следует отдавать их виртуальным таблицам. Вернувшись к рассмотрению модуля Word_TLB, построенного в резуль- тате импорта библиотеки типов Microsoft Word, можно заметить, что все ин- терфейсы, импортированные из дуальных интерфейсов библиотеки, имеют «двойников». Например, использованный ранее интерфейс _Application (часть его описания приводится выше по тексту) сопровождается следующим фрагментом (в сильном сокращении):
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »