Страница 2 из 2
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 14:38
Андрей
нисего не понимаю...
на 9.0 - ведь ТОЧНО то же работает !
а переменная описывается просто как: l:OLE LONG ?
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 15:23
Игорь Столяров
.
Андрей писал(а):а переменная описывается просто как: l:OLE LONG ?
По науке, для объектов нужно использовать тип данных CString(64). Но я использую Long.
Чудес ведь не бывает - создай в окне кнопку, скопируй на нее код, собери и нажми кнопку.
Только без фантазий с l:OLE и т.д. Просто вставь код и скомпилируй. Excel запустился ?
EO_ Long
Code
EO_ = Create(0,Create:Ole)
EO_{Prop:Create} = 'Excel.Application'
EO_{'Application.Visible'} = True
If EO_{'Application.Name'} = 'No ole automation interface'
Message(' У нас проблема !')
Display
else
EO_{'Application.ReferenceStyle'} = 1
EO_{'Application.Activate'}
EO_{'Application.WorkBooks.Add'}
!EO_{'Application.ActiveWorkbook.SaveAs("' & 'C:\test.xls' & '",' & '56' & ',,,,0)'}
Loop 3 times
EO_{Prop:Deactivate}
end
end
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 15:48
Дед Пахом
Игорь Столяров писал(а):По науке, для объектов нужно использовать тип данных CString(64). Но я использую Long.
По какой такой науке? CREATE() вообще-то возвращает тип SIGNED.
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 15:54
Игорь Столяров
Я тоже так думал. Когда-то долбился с объектами CryptoPro - там идет инициализация объекта на основании объекта
и обмен данными между объектами. Ничего не работало. Потом в справке Clarion нашел пример, где тип данных
объекта описывался как Cstring(64). Проверил, что возвращал объект - там действительно была какая-то огромная
цифра. Заменил Long на Cstring(64) - и все заработало. Могу поискать этот пример в справке, если интересно.
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 16:34
Андрей
Просто вставь код и скомпилируй. Excel запустился ?
В 9.0 - Да Да Да !
в 9.1 Нет Нет Нет ! Висит пустое окно Excel? приходится диспетчером процесс прибивать
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 16:46
Игорь Столяров
Ну мой пример 100% рабочий. Может быть кривой MS Excel или проблема в его версии ?
Попробуй переставить. У меня MS Office 2007.
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 22:28
Андрей
Похоже действительно дело в этом !
У меня 2010, перенес на комп где 2007 - работает! Обращаю внимание, что с 9.0 2010 работает !
Прошу проверить у кого как работает связка 9.1 и Excel 2010.
Re: 9.1 и глюк OLE ?
Добавлено: 11 Апрель 2014, 23:13
Дед Пахом
Игорь Столяров писал(а):Я тоже так думал. Когда-то долбился с объектами CryptoPro - там идет инициализация объекта на основании объекта
и обмен данными между объектами. Ничего не работало. Потом в справке Clarion нашел пример, где тип данных
объекта описывался как Cstring(64). Проверил, что возвращал объект - там действительно была какая-то огромная
цифра. Заменил Long на Cstring(64) - и все заработало. Могу поискать этот пример в справке, если интересно.
CREATE() реально возвращает SIGNED (или LONG, если угодно), это просто FEQ вновь созданного экранного контрола OLE. Другое дело, что EO_l{prop:object} вернёт адрес com-интерфейса этого объекта, причём его можно считать в строку, где первым символом будет "обратный апостроф" `, а всё остальное - адрес интерфейса. Такая странная конструкция получается из-за того, что EO_l{prop:object} на самом деле возвращает группу gVariant, в которой свойство gVariant.vt имеет значение VT_DISPATCH (9), а gVariant.lval содержит адрес, поэтому строковое значение получается таким "`nnnnnnnn",
Re: 9.1 и глюк OLE ?
Добавлено: 12 Апрель 2014, 9:43
Игорь Столяров
Да, точно. Так и было. Возвращалось значение с апострофом и замена на Long на Cstring решила эту проблему.
Но как я написал ранее - для Excel использую тип Long И нет никаких проблем.
Re: 9.1 и глюк OLE ?
Добавлено: 19 Апрель 2014, 9:59
Игорь Столяров
kreator писал(а):А попробуйте так:
А ещё можно так попробовать:
Код: Выделить всё
LOC:OLE = create(0, CREATE:ole)
LOC:OLE{prop:Create} = 'EXCEL.Application'
Проверьте, если не сложно.
После замены на 'EXCEL.Application' - заработал весь функционал обмена (чтение, запись, экспорт/импорт графики, форматирование и т.д.)
в Microsoft Office 365. Раньше были проблемы. Проверил на сборках C8 и C91.
Ура ! Еще раз огромное спасибо !

Re: 9.1 и глюк OLE ?
Добавлено: 25 Апрель 2014, 16:35
Андрей
Еще раз прошу отозваться по поводу работы связки С9.1 и Excel 2010. У меня на 2-х опробованных компьютерах не работает !
Re: 9.1 и глюк OLE ?
Добавлено: 11 Июнь 2014, 10:45
Игорь Столяров
Подтверждаю проблему. При сборке приложения в C91 на некоторых компьютерах (сейчас знаю 4 из более чем 300)
проявляется эта проблема. На сборке под C63 / C8 все работает без проблем.
Причем судя по всему от версии MS Office это не зависит - есть и MS Office 2007, 2010 и 2013, разные установочные комплекты и лицензия и не очень ...

Переустановка или замена версии MS Office - проблему не исправляет. Есть компьютер вообще с только установленной Window 7 и сразу проблема.
Более того, установил себе на компьютер MS Office 2013 с того же комплекта, что и на проблемном компьютере - все прекрасно работает.
Есть подозрение, что какой-то глюк с настройкой конкретной копии Windows, скорее всего с ее локализацией.
Попробую отловить проблему ... но к сожалению, пока на своих компьютерах ее не вижу.

Re: 9.1 и глюк OLE ?
Добавлено: 10 Август 2014, 11:53
Игорь Столяров
Дед Пахом писал(а):Говорят, вот это перестало работать (message пустую строку выводит), у меня экселя нет, проверить не могу.
Код: Выделить всё
?SMExcel{PROP:Create} = 'Excel.Application'
MESSAGE(?SMExcel{PROP:Object})
К сожалению - да, проблема есть. Но как-то странно проявляется, и только на некоторых компьютерах.
От версии Windows и MS Office не зависит. Иногда помогает переустановка Windows, причем с того же дистрибутива.
Что наводит на мысль, что дело в каких-то параметрах Windows, скорее всего Region Settings. Но поймать, что именно пока не могу.
В летних версиях C91 были какие-то изменения в ClaOLE.DLL - номер с подменой этого файла из майского релиза не проходит.
А вот если полностью пересобрать приложение на майской версии C91 - проблема не проявляется, все прекрасно работает.
Вот Вам и C91 GOLD, блин !
