![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Позднее связывание [D7, Win2k]
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, а при позднемнет.