![]() |
|
Модераторы: MetalFan |
![]()
|
|
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
Приветствую !!!
У меня такая проблемка - в приложении инфа сохраняется в файл excel - разрабатывал дома и с excel 2002 всё работало нормально... Но когда попробовал запустить на работе на excel 2000 выдало ошибку Access violation at adress 9CF4BF59... Ошибка вылетает при сохранении, вот так оно выглядит: ExcelApp.Workbooks[1].SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam, false, false, xlNoChange, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, icid); Я так полагаю, что дело в совместимости версий - не подскажете ли, чего надо дописать или наоборот убрать ??? |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
думаю проблема не в этом...
если делаешь через компоненты, то в этом можно убедиться набрав:
проблема может быть в переменной FileName... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
Excel2000 - это название компонента ExcelApplication или особенность для 2000-го ??? У меня просто сейчас возможности проверить нет, завтра на работе посмотрю...
А с переменной FileName - что может быть не так ??? Путь ??? Просто дома-то работает всё на ура... А на работе - вылетает эта ошибка, а потом при закрытии самой проги - выдаётся сообщение о сохранении файла под именем Книга1 и если согласиться, то в файле всё данные четко записываются, как надо... |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
нет... просто когда одна и та же функция объявлена в нескольких подключёных модулях, то чтобы при обращении к фунции срабатывала нужная функция, необходимо указывать модуль... вот этот Excel2000 и есть обращение к конкретному модулю...
количество параметров и параметры такие же у 2000 как и у ХР (2002), я проверял... А с переменной FileName - эта переменная OleVariant - а у этого типа данных нелады с русскими буквами... отсюда и возможные ошибки могут вылетать... а если бы была проблема с несовместимостью, то вылетало бы что-то вроде следующего: "Method ... Not Supported Automatically Object" Это сообщение отредактировал(а) Albinos_x - 22.5.2006, 20:19 -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
Т.е. следует попробовать указывать путь используя только англицкие буквы ?
Я, кстати, пробовал на работе изменить SaveAs параметры и когда сделал все (кроме имени файла конечно и последнего icid) EmptyParam-ами вылетела ошибка про variant, правда я не записал И ещё, может ли эта проблема быть связана с выбором версии офиса при установке самого Delphi ??? |
|||
|
||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
желательно... странно... у меня всё нормально работает...
врят ли.... у меня работают приложения, которые давно ещё под 2000 делал и в ХРшном и в 2003... и наоборот...ХРшные работают и на 2000 и на 2003... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
Ладно, завтра попробую поменять путь... Надеюсь поможет...
|
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
ну... если что... заходи
бумс разбираться... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
С путём ничего не получилось
Посмотрел в uses модуля и увидел там ExcelXP, попробовал удалить и написать Excel2000 Пробовал посмотреть через Excel2000. ... - но там какие-то константы, типы - я в этом совсем |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
код процедуры сохранения в студию
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
Итак, код-с :
Сразу скажу, что всё работает, на ХР !!! А то как-то раз код написал, а чел грит, что такое работать не может !!! Да как же не может если всё работает !!! Это сообщение отредактировал(а) Girder - 19.9.2006, 17:20 |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
что стоит перед ExcelApp.Workbooks[1].SaveAs(...
2 команды? -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
EWs - это компонент Worksheet
А //Бла-бла-бла - это просто я так обозначил, что там ещё инфу записываю |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
procedure SaveAs( FileName:OleVariant ; FileFormat:OleVariant ; Password:OleVariant ; WriteResPassword:OleVariant ;
ReadOnlyRecomended:OleVariant ; CreateBackUp:OleVariant ; AccesMode:XLSaveAsAccessMode ; ConflictResolution:OleVariant ; AddtoMru:OleVariant ; TextCodePage:OleVariant ; TextVisualLayout:OleVariant ; lcid:Integer) FileName - Имя файла в котором сохраняется книга, если имя и путь не указан, то книга сохранятся в текущем каталоге. (String) FileFormat - формат файла (Integer) Password - Пароль для открытия файла (String) WriteResPassword - Пароль для изменения файла (String) ReadOnlyRecomended - рекомендовать доступ только для чтения. (Boolean) CreateBackUp - всегда создать резервный копию (Boolean) ConflictResolution - способ разрешения конфликтов между пользователями AddtoMRU - Boolean - добавить файл в список недавно использованых (Boolean) AccesMode - режим доступа к файлу и может принимать значения: - xlNoChange - не изменять ранее установленный режим - xlExclusive - исключительный доступ пользователя к файлу. При этом если файл был в это время открыт другим пользователем, то ему будет предложено сохраниться под другим именем. - xlShared - свободный доступ так должно работать:
похоже я не туда копал.... у вас один лишний параметр оттуда и ошибка Это сообщение отредактировал(а) Albinos_x - 24.5.2006, 20:12 -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
Пасиба !!!
Завтра попробую !!! |
|||
|
||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
а вообще селесообразней сделать через:
т.к. в момент работы программы может быть открыто несколько книг... тогда сохранится не та, которую мы хотим... а ещё целесообразней сделать так:
тогда различных непонятных косяков не будет... Это сообщение отредактировал(а) Albinos_x - 24.5.2006, 20:22 -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
Блин а в ХР так не катит, грит не хватает параметров !!!
|
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
да точно мой косяк... обсчитался... прошу прощение за введение в заблуждение...
Добавлено @ 20:49 случайно параметр пропустил: procedure SaveAs( FileName:OleVariant ; FileFormat:OleVariant ; Password:OleVariant ; WriteResPassword:OleVariant ; ReadOnlyRecomended:OleVariant ; CreateBackUp:OleVariant ; AccesMode:XLSaveAsAccessMode ; ConflictResolution:OleVariant ; AddtoMru:OleVariant ; TextCodePage:OleVariant ; TextVisualLayout:OleVariant ; Local:OleVariant; lcid:Integer) -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
сделай так:
это первое различие, которое я нашёл между 2000 и 2002... пасиб... надо в свою статью внести изменения... Добавлено @ 21:16 т.е. для твоего кода:
соответственно, если нужно, можно заменить ExcelWorkbook на ExcelApp.ActiveWorkbook или ExcelApp.Workbooks[1]... Это сообщение отредактировал(а) Albinos_x - 24.5.2006, 21:10 -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
У меня на вот это ругается:
EWs.ConnectTo(ExcelApp.Workbooks.Add(EmptyParam,icid)); Говорит Incompatible types '_Workbook' and '_WorkSheet' Добавлено @ 21:32 А можно про эту строчку поподробнее if (StrToInt(Copy(ExcelApp.Version[icid],1,pos('.',ExcelApp.Version[icid])-1)))=9 then Что здесь что значит ??? а то вполне возможно придётся переделывать под office2003 |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
понятное дело... поэтому я и написал переменную
ExcelWorkbook т.к. это книга, а у тебя EWs, как понял является листом книги... если я правильно понял, то ты делаешь через стандартные компоненты... там на закладке Servers есть компоненты: ExcelApplication1 ExcelWorkbook1 ExcelWorkSheet1 Добавлено @ 21:39 эту статью читал? ExcelApp.Version[icid] вернёт строку: Excel97 = "8.0" Excel2000 = "9.0" Excel2002 (XP) = "10.0" Excel2003 = "11.0" -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
Статью читал, правда давненько, уже подзабыл
ИСпользую стандартные компоненты с Servers, правда ExcelWorkbook1 на форму не кидаю, так обхожусь... Теперь такая штуковина: Если написать так (EWs as ExcelXP.ExcelWorkbook).SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam,0); ТО выскакивает ... Could not convert variant of type (Error) into type (Boolean) Если же написать так: (EWs as ExcelXP.ExcelWorkbook).SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, xlNoChange, EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam,0); ТО получаем Interface not supported Вот же блин Это сообщение отредактировал(а) Litta - 24.5.2006, 22:12 |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
у тебя какая версия делфи?
У меня всё нормально работает... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
Delphi 7
Может uses какой-нить надо подключить ? (Excel2000 я подключил, так не работало бы А то иногда так бывает, когда пишешь с начала, то всё ок, а когда во что-то внедряешь - приходится самому добавлять всякие uses-ы |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
для страницы метод сохранения другой... там нет параметров: AccesMode:XLSaveAsAccessMode ; ConflictResolution:OleVariant ; Local:OleVariant там вообще достаточно одного параметра FileName.... и не нужно далать разделение между версиями... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
и делать тогда лучше так:
а проще вообще:
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| Litta |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 14.3.2006 Репутация: 1 Всего: 1 |
Ура, я разобрался !!! Всё гениальное просто
FileName - имя файла - сделал WideString и всё заработало !!! И на 2000-м и на ХР !!! (надеюсь на 2003-й это тоже распространится Большое спасибо за помощь !!!!!!! PS: Если написать EWs.SaveAs(FileName) - то вылетает ошибка опять кажется аксесс виолэйшн ин 00000000 ... |
|||
|
||||
![]()
|
| Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |