![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
OleGator08 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 14.1.2008 Где: Тюмень Репутация: нет Всего: нет |
Вот статья по теме http://forum.vingrad.ru/faq/topic-156830.html про DLL для Excel, напис. на дельфях... Мне по работе надо свою физику (библиотеку вычисляемых свойств) написать людям в качестве надстройки для ехеля... Так вот, все бы ничего, считается все нормально, пользовался в том числе и описанными функциями! Но никак не могу избавится от ошибки после окончания работы с ехелевским файлом, ошибкой памяти (сразу после закрытия Excel)...
Runtime error 216 at ...
Объявил в Exel как (для варианта уже, было и Double - не помогает): Public Declare Function Молек_Масса Lib "TNGGLib.dll" _ Alias "f_MM" (МассДоля_i As Variant, _ МолекМасса_i As Variant, _ Плотность20_i As Variant) As Variant |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
ошибка в 17й строке)
-------------------- There are always someone smarter than you... |
|||
|
||||
OleGator08 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 14.1.2008 Где: Тюмень Репутация: нет Всего: нет |
если честно не понял, это была шутка или ответ... но очень расчитывал на помощь... времени катастрофически нет, а проблема висит, очень был бы благодарен за реальную помощь, без намеков а пару слов конкретно, можно примером... |
|||
|
||||
VICTAR |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 37 Всего: 80 |
||||
|
||||
OleGator08 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 14.1.2008 Где: Тюмень Репутация: нет Всего: нет |
Пожалуй я не прав... Надо запрос не в Дельфи-форум а в Форум Excel VBA делать... сорри... Попробую там... Не в коде Дельфи баг, а в том, что Excel не обработает адекватно функцию dll, написанную на D6 и после закрытия Excel выдает ошибку использования памяти... А плюнуть на нее как то не хочется... А считает эта функция в Excel правильно! =Молек_Масса(E4:E51;Фракции!B4:B51;Фракции!C4:C51) дает в ячейке 156.073 к примеру Теперь записываем книгу xls, выходим из Excel и идет ошибка эта с попыткой отправки отладки в MS... Т.е. вопрос то в том, как Excel воспринимает подсунутые DLL? Что то там не так срастается, - конфликты с DLL на дельфях писанные... |
||||
|
|||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
на какую помощь ты рассчитывал? что все кинуться повторять и отлавливать ошибку? у многих нет на это времени. хочешь увеличить вероятность оказания помощи - выложи тестовые примеры ексельного файла и проекта библиотеки. -------------------- There are always someone smarter than you... |
|||
|
||||
OleGator08 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 14.1.2008 Где: Тюмень Репутация: нет Всего: нет |
Ясно... Рассчитывал на помощь, что у кого то подобный опыт уже был... А копать мой код - это ваще неблагодарная затея... Я бы не стал, к примеру... Увы и ах... Будем искать дальше... Может у кого то где то и были подобные баги...
Добавлено через 12 минут и 55 секунд И еще замечу... Ранее при работе со всеми этими функциями в проектах, где происходило вычисление данных и передача их тупо в ячейки Excel - все работало нормально... Т.е. отрабатывал exe-файл, написанный на D6, и в нем же происходила передача вычисляемых данных через OLE-механизм в нужные ячейки... Никаких ошибок при работе с динамическими массивами и своими типами дин. массивов... А вот при попытке привлечь вычисление с использованием DLL - что то Excel не понравилось... Ошибка явно использования памяти... Думаю, что наверняка были у народа подобные "грабли", кто работает с передачей данных в MS Office.... |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
может в dll CoInitialize/CoUnitialize вызывать... ?
-------------------- There are always someone smarter than you... |
|||
|
||||
OleGator08 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 14.1.2008 Где: Тюмень Репутация: нет Всего: нет |
Забавно! Причина стала понятной! Осталось только понять как устранить баг! Итак, используя утилиты и в частности tasklist /m удалось понять, что при выходе Excel тупо не успевает выгрузить за собой rtl60.bpl, которая похоже как то "не переваривается" MS... Тупо поставив задержку на событии закрытия листа в виде MsgBox("") получили выгрузку всего "паровоза", тянущегося за моей DLL... И уже нажав на "ok" Excel мирно выгрузился
![]() Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
А зачем ты вместе с пекетами Dll юзаешь? Выключи Build with runtime packages и может проблема исчезнет
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
я тебе уже посоветовал: создай пример xls файла и пример библиотеки. соотв.чтобы из екселя вызывалась какая-нибудь функция из dll выложи их здесь и кто-нибудь наверняка посмотрит ;) -------------------- There are always someone smarter than you... |
|||
|
||||
OleGator08 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 14.1.2008 Где: Тюмень Репутация: нет Всего: нет |
Доброго времени суток! Выкладываю надстройку для Excel xla файл, dll и пример использования test_dll.xls, где на последнем листе работает пара ф-ций... Ошибка повторяется при добавке нового использования ф-ций, после выхода из Excel и т.д. Dll - лучше положить в Windows или иной каталог для умолчания... Компоновать с runtime - желательно, чтобы не тащить это все юзерам на персоналки... Присоединённый файл ( Кол-во скачиваний: 10 ) ![]() |
|||
|
||||
OleGator08 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 14.1.2008 Где: Тюмень Репутация: нет Всего: нет |
Нет проблема не исчезает и с компоновкой без пакетов... Более того, вставляешь использование иных функций из dll в Лист эта долбанная ошибка вылетает даже если последовательно сохранить книгу и выходить их Excel! Как корректно освобождать этот паровоз пакетов? Может можно при закрытии организовать из dLL выгрузку пакетов принудительно? Есть такие процедуры? Или есть иные методы как бороться с этим паровозом, которого MS что то не понимает? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |