Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка программы на C# с Word в Windows XP  (Прочитано 7194 раз)
0 Пользователей и 1 Гость смотрят эту тему.
tumanovalex
Помогающий

ru
Offline Offline

« : 19-08-2011 16:15 » 

Очень странно, но программа проверки орфографии с помощью Word работает в Windows 7 без проблем, а в Windows XP дает ошибку. Очень бы хотелось узнать, с помощью каких средств или по каким методикам можно узнать причину этой ошибки. Прикрепляю проект, который работает в Windows 7, но не работает в XP (причем, везде office word 2007 и VS2008 в одинаковой комплектации)

* MySpellCheck2.zip (11.03 Кб - загружено 137 раз.)
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 19-08-2011 17:37 » 

tumanovalex, ты полагаешь, что здесь будет масса желающих тестировать программу на разных ОС и воспроизводить ошибку?

Я бы посоветовал всё же сделать описание ошибки и более конкретно описать ситуацию её возникновения. Симптомы, так сказать; как ты вообще увидел, что ошибка есть.
« Последнее редактирование: 19-08-2011 21:36 от Dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 19-08-2011 19:35 » 

А я попробую побыть телепатом. Если программа на .NET запускается в 7-ке, но не запускается в WinXP - то, может, дело в том, что на XP нет нужной версии .NET Framework. Ну так, просто, вдруг.
Записан
tumanovalex
Помогающий

ru
Offline 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
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 20-08-2011 15:53 » 

Приведи точные версии (включая Service Pack'и) операционных систем и стоящих на них MS Office, а также состав MS Office на каждой машине (через установку/удаление программ - какие компоненты Office установлены). Кроме того, приведи список версий установленных на каждой машине .NET Framework.

P.S. Явно что-то недоустановлено.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
tumanovalex
Помогающий

ru
Offline 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
Деятель
Команда клуба

ru
Offline 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
Помогающий

ru
Offline Offline

« Ответ #7 : 20-08-2011 17:02 » 

Спасибо, действительно ерунда. Этот код из примера из интернета, попробую исправить и посмотреть на результат в Windows XP. Windows XP на работе, завтра проверю.
« Последнее редактирование: 20-08-2011 17:05 от tumanovalex » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 20-08-2011 21:00 » 

tumanovalex, это ничего не изменит в твоей ошибке, поэтому там написано "в сторону".
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
tumanovalex
Помогающий

ru
Offline Offline

« Ответ #9 : 21-08-2011 03:00 » 

А где в сообщении об ошибке написано "в сторону"? И что значит "в сторону"?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 21-08-2011 07:15 » 

tumanovalex, а почему ты считаешь, что это написано в сообщении об ошибке? Улыбаюсь

"В сторону" - выражение, употребляемое в пьесах, когда персонаж тихо высказывает свои мысли или наблюдения в сторону от других действующих лиц (как правило, в зал), и эти высказывания не являются частью диалога или полилога действующих лиц.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
tumanovalex
Помогающий

ru
Offline 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 » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines