tumanovalex
Помогающий
Offline
|
|
« : 19-08-2011 16:15 » |
|
Очень странно, но программа проверки орфографии с помощью Word работает в Windows 7 без проблем, а в Windows XP дает ошибку. Очень бы хотелось узнать, с помощью каких средств или по каким методикам можно узнать причину этой ошибки. Прикрепляю проект, который работает в Windows 7, но не работает в XP (причем, везде office word 2007 и VS2008 в одинаковой комплектации)
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 19-08-2011 17:37 » |
|
tumanovalex, ты полагаешь, что здесь будет масса желающих тестировать программу на разных ОС и воспроизводить ошибку?
Я бы посоветовал всё же сделать описание ошибки и более конкретно описать ситуацию её возникновения. Симптомы, так сказать; как ты вообще увидел, что ошибка есть.
|
|
« Последнее редактирование: 19-08-2011 21:36 от Dimka »
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Вад
|
|
« Ответ #2 : 19-08-2011 19:35 » |
|
А я попробую побыть телепатом. Если программа на .NET запускается в 7-ке, но не запускается в WinXP - то, может, дело в том, что на XP нет нужной версии .NET Framework. Ну так, просто, вдруг.
|
|
|
Записан
|
|
|
|
tumanovalex
Помогающий
Offline
|
|
« Ответ #3 : 20-08-2011 13:58 » |
|
Прошу прощения за свою тупость. В функции public void fSpellCheck(TextBox tBox, Label lLbl) { int iErrorCount = 0; Word._Application app = new Word.Application(); if (textBox1.Text.Length > 0) { app.Visible = false; // ошибка object template = Missing.Value; object newTemplate = Missing.Value; object documentType = Missing.Value; object visible = true; object optional = Missing.Value; Word._Document doc = app.Documents.Add(ref template, ref newTemplate, ref documentType, ref visible); // ошибка doc.Words.First.InsertBefore(tBox.Text); Word.ProofreadingErrors we = doc.SpellingErrors; iErrorCount = we.Count; doc.CheckSpelling(ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional); if (iErrorCount == 0) lLbl.Text = "Spelling OK. No errors corrected "; else if (iErrorCount == 1) lLbl.Text = "Spelling OK. 1 error corrected "; else lLbl.Text = "Spelling OK. " + iErrorCount + " errors corrected "; object first = 0; object last = doc.Characters.Count - 1; tBox.Text = doc.Range(ref first, ref last).Text; } else lLbl.Text = "Textbox is empty"; object saveChanges = false; object originalFormat = Missing.Value; object routeDocument = Missing.Value; app.Quit(ref saveChanges, ref originalFormat, ref routeDocument); } на строках, в комментариях которых указана ошибка, программа дает исключение: Невозможно привести COM-объект типа "Microsoft.Office.Interop.Word.ApplicationClass" к интерфейсному типу "Microsoft.Office.Interop.Word._Application". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{00020970-0000-0000-C000-000000000046}" возвратил следующую ошибку: Интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #4 : 20-08-2011 15:53 » |
|
Приведи точные версии (включая Service Pack'и) операционных систем и стоящих на них MS Office, а также состав MS Office на каждой машине (через установку/удаление программ - какие компоненты Office установлены). Кроме того, приведи список версий установленных на каждой машине .NET Framework.
P.S. Явно что-то недоустановлено.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
tumanovalex
Помогающий
Offline
|
|
« Ответ #5 : 20-08-2011 16:13 » |
|
На обеих системах - Windows Office 2007 SP1 в одинаковой комплектации (Word, Access, Outlook, Exel), Visual Studio 2008 в одинаковой комплектации (полностью, кроме 64 битных средств разработки). Windows XP SP3, проверял в Windows 7 Starter и Pro. В Windows XP и Win 7 установлены NET Framework 2-4. Может быть попробовать в чистой системе Windows XP SP3 (например в VM Ware)?
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #6 : 20-08-2011 16:19 » |
|
В сторону: Word.ProofreadingErrors we = doc.SpellingErrors; iErrorCount = we.Count; doc.CheckSpelling(ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional); if (iErrorCount == 0)
Мне этот кусок непонятен. Ты сначала получаешь количество ошибок, а потом запускаешь проверку? А смысл?
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
tumanovalex
Помогающий
Offline
|
|
« Ответ #7 : 20-08-2011 17:02 » |
|
Спасибо, действительно ерунда. Этот код из примера из интернета, попробую исправить и посмотреть на результат в Windows XP. Windows XP на работе, завтра проверю.
|
|
« Последнее редактирование: 20-08-2011 17:05 от tumanovalex »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #8 : 20-08-2011 21:00 » |
|
tumanovalex, это ничего не изменит в твоей ошибке, поэтому там написано "в сторону".
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
tumanovalex
Помогающий
Offline
|
|
« Ответ #9 : 21-08-2011 03:00 » |
|
А где в сообщении об ошибке написано "в сторону"? И что значит "в сторону"?
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #10 : 21-08-2011 07:15 » |
|
tumanovalex, а почему ты считаешь, что это написано в сообщении об ошибке? "В сторону" - выражение, употребляемое в пьесах, когда персонаж тихо высказывает свои мысли или наблюдения в сторону от других действующих лиц (как правило, в зал), и эти высказывания не являются частью диалога или полилога действующих лиц.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
tumanovalex
Помогающий
Offline
|
|
« Ответ #11 : 21-08-2011 14:33 » |
|
Теперь понятно, я раньше такой термин не стречал.
Добавлено через 18 дней, 18 часов, 31 минуту и 15 секунд: Попробовал на Windows XP в Virtual PC, с установленным Офисом, NET Framework 3.5. Все работает. Видимо, у меня на рабочей системе какие-то конфликты.
|
|
« Последнее редактирование: 09-09-2011 09:04 от tumanovalex »
|
Записан
|
|
|
|
|