9.1 и глюк OLE ?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: 9.1 и глюк OLE ?

Сообщение Андрей »

нисего не понимаю...

на 9.0 - ведь ТОЧНО то же работает !

а переменная описывается просто как: l:OLE LONG ?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

.
Андрей писал(а):а переменная описывается просто как: 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
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: 9.1 и глюк OLE ?

Сообщение Дед Пахом »

Игорь Столяров писал(а):По науке, для объектов нужно использовать тип данных CString(64). Но я использую Long.
По какой такой науке? CREATE() вообще-то возвращает тип SIGNED.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

Я тоже так думал. Когда-то долбился с объектами CryptoPro - там идет инициализация объекта на основании объекта
и обмен данными между объектами. Ничего не работало. Потом в справке Clarion нашел пример, где тип данных
объекта описывался как Cstring(64). Проверил, что возвращал объект - там действительно была какая-то огромная
цифра. Заменил Long на Cstring(64) - и все заработало. Могу поискать этот пример в справке, если интересно.
Make Clarion Great Again ! 😎
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: 9.1 и глюк OLE ?

Сообщение Андрей »

Просто вставь код и скомпилируй. Excel запустился ?
В 9.0 - Да Да Да !
в 9.1 Нет Нет Нет ! Висит пустое окно Excel? приходится диспетчером процесс прибивать
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

Ну мой пример 100% рабочий. Может быть кривой MS Excel или проблема в его версии ?
Попробуй переставить. У меня MS Office 2007.
Make Clarion Great Again ! 😎
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: 9.1 и глюк OLE ?

Сообщение Андрей »

Похоже действительно дело в этом !
У меня 2010, перенес на комп где 2007 - работает! Обращаю внимание, что с 9.0 2010 работает !

Прошу проверить у кого как работает связка 9.1 и Excel 2010.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: 9.1 и глюк OLE ?

Сообщение Дед Пахом »

Игорь Столяров писал(а):Я тоже так думал. Когда-то долбился с объектами 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",
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

Да, точно. Так и было. Возвращалось значение с апострофом и замена на Long на Cstring решила эту проблему.
Но как я написал ранее - для Excel использую тип Long И нет никаких проблем.
Make Clarion Great Again ! 😎
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

kreator писал(а):А попробуйте так:
А ещё можно так попробовать:

Код: Выделить всё

    LOC:OLE = create(0, CREATE:ole)
    LOC:OLE{prop:Create} = 'EXCEL.Application'
Проверьте, если не сложно.
После замены на 'EXCEL.Application' - заработал весь функционал обмена (чтение, запись, экспорт/импорт графики, форматирование и т.д.)
в Microsoft Office 365. Раньше были проблемы. Проверил на сборках C8 и C91.

Ура ! Еще раз огромное спасибо ! :)
Make Clarion Great Again ! 😎
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: 9.1 и глюк OLE ?

Сообщение Андрей »

Еще раз прошу отозваться по поводу работы связки С9.1 и Excel 2010. У меня на 2-х опробованных компьютерах не работает !
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

Подтверждаю проблему. При сборке приложения в C91 на некоторых компьютерах (сейчас знаю 4 из более чем 300)
проявляется эта проблема. На сборке под C63 / C8 все работает без проблем.

Причем судя по всему от версии MS Office это не зависит - есть и MS Office 2007, 2010 и 2013, разные установочные комплекты и лицензия и не очень ... :(
Переустановка или замена версии MS Office - проблему не исправляет. Есть компьютер вообще с только установленной Window 7 и сразу проблема.
Более того, установил себе на компьютер MS Office 2013 с того же комплекта, что и на проблемном компьютере - все прекрасно работает.
Есть подозрение, что какой-то глюк с настройкой конкретной копии Windows, скорее всего с ее локализацией.
Попробую отловить проблему ... но к сожалению, пока на своих компьютерах ее не вижу. :(
Make Clarion Great Again ! 😎
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

Дед Пахом писал(а):Говорят, вот это перестало работать (message пустую строку выводит), у меня экселя нет, проверить не могу.

Код: Выделить всё

 ?SMExcel{PROP:Create} = 'Excel.Application'
          MESSAGE(?SMExcel{PROP:Object})
К сожалению - да, проблема есть. Но как-то странно проявляется, и только на некоторых компьютерах.
От версии Windows и MS Office не зависит. Иногда помогает переустановка Windows, причем с того же дистрибутива.
Что наводит на мысль, что дело в каких-то параметрах Windows, скорее всего Region Settings. Но поймать, что именно пока не могу.
В летних версиях C91 были какие-то изменения в ClaOLE.DLL - номер с подменой этого файла из майского релиза не проходит.
А вот если полностью пересобрать приложение на майской версии C91 - проблема не проявляется, все прекрасно работает.
Вот Вам и C91 GOLD, блин ! :(
Make Clarion Great Again ! 😎
Ответить