![]() |
![]() |
Посторонним В 03.05.2004 - 12:42 |
Здравствуйте всем. Возникла проблема с программкой, которая должна сохранять данные в несколько excel-овских файликов. Программа не моя, кода сейчас под рукой нет, ну, там было приблизительно так (прошу прощения за возможные неточности, давно с паскалем не имел дела): var E:Variant; begin E := CreateOleObject(Excel.Application); //что-то делается с E.WorkBook.Cells[i][j] //что-то типа E.WorkBook.Save E.Quit; E := Unassigned; end; Вся эта штука крутится в цикле ~ 50 раз. Собираю это дело на машине с Windows XP и Office 2000 - все работает аж бегом. Несу на другую машину с 98-й виндой и 97-м офисом - вылетает "Ошибка при запуске чего-то там". И в списке приложений висит 3-4 Excel-я. Я так себе понимаю, что программа некорректно закрывает объект OLE. Как можно с этим бороться? Может, в Delphi вместо пакета с компонентами для 2000 офиса зарегистрировать пакет для 97-го и пересобрать? Или нужно по-другому закрывать объект (т.е. присваивание Unassigned не годится)? |
Delphist 1 - 03.05.2004 - 13:09 |
1. Где-то на одной из форм лежит копонент TExcelApplication/TExcelWorkbook/и т.п., который в свою очередь хочет быть объектом Office2000 2. Посмотри модули в списке USES (как interface, так и implementation), для каждого PAS-файла. Где-то притаился модуль Excel2000. . Других идей пока нет. |
9600 2 - 04.05.2004 - 08:15 | Попробуй перед E.Unassigned поставить E.Disconnect |