Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Позднее связывание [D7, Win2k]


Страницы:   1 2

WebErr ©   (2004-10-13 13:25:00) 

Чем оно лучше раннего связывания?
Я имею в виду ExcelApplication.


KSergey   (2004-10-18 07:40:00) [1]

> [23] Nurik   (16.10.04 18:46)
> и на последней строчке происходит ошибка.

Какая?? Что, постоянно всех переспрашивать надо?
А вообще, боюсь проблема не от резервированности слова. Что-то вы не то делаете.


Nurik   (2004-10-16 18:47:00) [2]

Вопрос не много не по теме, но интересный.
Выполняется следующий код:
   ExcelApp := CreateOleObject('Excel.Application');
   ExcelApp.WorkBooks.Add(1);
   ExcelApp.WorkBooks[1].WorkSheets[1].Name := 'Лист';
..............................
   pt:=ExcelApp.Workbooks[1].ActiveSheet.PivotTableWizard
       (SourceType :=1, SourceData:='Лист!A1:J10',
       TableDestination:='', TableName:='сводная1');
   pt.AddFields (RowFields:='Region');
   pt.PivotFields('Town').Orientation := 4;
   pt.PivotFields('Town'). Function:= 1;
и на последней строчке происходит ошибка. Думаю что слово Funсtion зарезервировано. Как выйти из положения?
Нашел функции OlePropertyGet и OlePropertySet но они не работают.


Nurik   (2004-10-16 18:46:00) [3]

Вопрос не много не в тему но интересный.
Выполняется следующий код:
   ExcelApp := CreateOleObject('Excel.Application');
   ExcelApp.WorkBooks.Add(1);
   ExcelApp.WorkBooks[1].WorkSheets[1].Name := 'Лист';
..............................
   pt:=ExcelApp.Workbooks[1].ActiveSheet.PivotTableWizard
       (SourceType :=1, SourceData:='Лист!A1:J10',
       TableDestination:='', TableName:='сводная1');
   pt.AddFields (RowFields:='Region');
   pt.PivotFields('Town').Orientation := 4;
   pt.PivotFields('Town'). Function:= 1;
и на последней строчке происходит ошибка. Думаю что слово Funсtion зарезервировано. Как выйти из положения?
Нашел функции OlePropertyGet и OlePropertySet но они не работают.


jack128   (2004-10-14 14:34:00) [4]

KSergey ©   (14.10.04 8:55) [21]
Когда подключился - что толку узнать версию? Чтобы сказать "простите, не вышло"? ;)


Подключился поздним проверил версию и подключился нужным ранним. Хотя бред, конечно.


> Вообще под версией я понимал другое

я понял. Именно эту цифру и выдает свойство Version

> А, если я ничего не путаю, при изменении спецификации
> COM-сервера ему назначают другой GUID.
да, конечно. Один из основопологающих принципов СОМ


KSergey   (2004-10-14 08:55:00) [5]

> jack128 ©   (13.10.04 15:15) [15]
> Это бы пол-беды. Хуже то, что состав параметров может отличаться
> от версии к версии. Ну либо коннектиться к COM-объекту определенной
> версии (наверное?). Но тогда к какой?
> ну в офисе есть свойство Version

Поздно уже ;) Когда подключился - что толку узнать версию? Чтобы сказать "простите, не вышло"? ;)

Вообще под версией я понимал другое: указывать не просто 'Excel.Application', а 'Excel.Application.10' ну или другую цифирю по вкусу. Хотя. это опять же про позднее связывание. А про раннее... Ну так подозреваю, что например TWord97 подключится к 97 версии (ну или как там она), т.к. в него прошит GUID именно этого COM-сервера. А, если я ничего не путаю, при изменении спецификации COM-сервера ему назначают другой GUID.

> Да, заведи ветку,

Хорошо.
Придумаю состав экспериментов - заведу.


WebErr   (2004-10-13 15:34:00) [6]

Разделите со мной мою радость! 8)

program ProjectOLE;

{$APPTYPE CONSOLE}

uses
 SysUtils, ComObj, ActiveX;

var
 xl: OleVariant;

begin
 CoInitialize(nil);
 try
   xl := CreateOleObject('Excel.Application');
   xl.Visible := true;
   xl.WorkBooks.Open('O:\Users\Weber\Projects\OLE\Ïðèìåð.xls');
   sleep(5000);
 finally
   xl.Application.Quit;
 end;
end.

Спасибо всем большое, особенно Amoeba! 8)


WebErr   (2004-10-13 15:32:00) [7]

Accepted


jack128   (2004-10-13 15:21:00) [8]

WebErr ©   (13.10.04 15:19) [17]
угу, я имел в виду CoInitializeEx - sorry


WebErr   (2004-10-13 15:19:00) [9]


> jack128 ©   (13.10.04 15:15) [15]

Стопудово нет, иначе бы не было undefined identifier CoInitialize


jack128   (2004-10-13 15:16:00) [10]

jack128 ©   (13.10.04 15:15) [15]
Но я ранним связаванием РЕДКО пользуюсь,


jack128   (2004-10-13 15:15:00) [11]

KSergey ©   (13.10.04 14:31) [7]
Это бы пол-беды. Хуже то, что состав параметров может отличаться от версии к версии. Ну либо коннектиться к COM-объекту определенной версии (наверное?). Но тогда к какой?

ну в офисе есть свойство Version

2 Суслик и KSergey ©   (13.10.04 14:31) [7]
Не уверен за корректность своих опытов, но у меня плучалось одинаково
теоретически - должна быть разница, равная времени вызова GetIDsOfNames..  Да, заведи ветку, я сейчас попробывал - у мя тоже в рамках погрешности разница.. Но я ранним связаванием пользуюсь, ножет накозячел, где нить..
WebErr ©   (13.10.04 14:59) [12]
ComObj


WebErr   (2004-10-13 15:14:00) [12]

Бяки вы все. Не сказали бедолаге, что CoInitialize в ActiveX Unit'е.


WebErr   (2004-10-13 15:04:00) [13]

Выражусь точнее: в каком юните его искать, поскольку я понял что для консолного проекта оно иниц-ет COM модель.


WebErr   (2004-10-13 14:59:00) [14]

Где и как именно его вызывать и зачем оно надо?


WebErr   (2004-10-13 14:59:00) [15]

Где и как именно его вызывать и зачем оно надо?


Amoeba   (2004-10-13 14:54:00) [16]


> у меня вылезла CoInitialize error! Почему?

Потому, что не вызвал CoInitialize в КОНСОЛЬНОМ приложении.


WebErr   (2004-10-13 14:50:00) [17]

Мне объяснили, что я должен переделать код, где было раннее связывание, на код с поздним для того, чтобы не зависеть от версии Офиса установленного на путере клиента!
Кстати я попробовал следующий код и у меня вылезла CoInitialize error! Почему?

program ProjectOLE;

{$APPTYPE CONSOLE}

uses
 SysUtils, ComObj;

var
 xl: OleVariant;

begin
 xl := CreateOleObject('Excel.Application');
end.


Суслик   (2004-10-13 14:32:00) [18]


> > [2] Amoeba ©   (13.10.04 13:34)
> > А хуже тем, что быстродействие
> > получается очень существенно более низким.

я тоже не согласен.
более низкое быстроедействие, но сущесвенным такое замедление назвать нельзя


KSergey   (2004-10-13 14:31:00) [19]

> [5] jack128 ©   (13.10.04 14:20)
> при позднем - обязан указать ВСЕ парамеры(а их может быть
> ОЧЕНЬ много)

Это бы пол-беды. Хуже то, что состав параметров может отличаться от версии к версии. Ну либо коннектиться к COM-объекту определенной версии (наверное?). Но тогда к какой?

> [2] Amoeba ©   (13.10.04 13:34)
> А хуже тем, что быстродействие
> получается очень существенно более низким.

А вот тут...
Не уверен за корректность своих опытов, но у меня плучалось одинаково. С точностью до погрешности измерений.

Может завести ветку и обсудить где я был не прав?


jack128   (2004-10-13 14:20:00) [20]

jack128 ©   (13.10.04 14:20) [5]
при раннем связовании доступен Code Insight, а при позднемнет.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо