Imam sledeći test program koji prikazuje značenja reči iz Wordovog rečnika sinonima. Testirao sam sa Microsoft Office 2010 i Microsoft Office 2013 Preview. Iako sve deluje u redu, za ovaj problem sam tražio pomoć i na StackOverflow, bez uspeha za sada.
using System;
using Word = Microsoft.Office.Interop.Word;
class Program
{
static void Main(string[] args)
{
string word = "elite"; // = "common";
var app = new Word.Application();
var synInfo = app.SynonymInfo[word, Word.WdLanguageID.wdEnglishUS];
if (synInfo.Found && synInfo.MeaningCount > 0)
{
foreach (var meaning in synInfo.MeaningList as Array)
Console.WriteLine(meaning.ToString());
}
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(synInfo);
app.Quit(Word.WdSaveOptions.wdDoNotSaveChanges);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(app);
}
}
Program radi kako bi se i očekivalo, međutim samo za neke reči, poziv get_SynonymInfo() baca izuzetak.
Unhandled Exception: System.Runtime.InteropServices.COMException: Insufficient memory or disk space.
at Microsoft.Office.Interop.Word.ApplicationClass.get_SynonymInfo(String Word, Object& LanguageID)
at WordInteropTest.Program.Main(String[] args) in Program.cs:line 11
Reči za koje znam da bacaju izuzetak:
- elite (ali "elites" radi)
- near
- tuck
- tucks
- walking
- onboard
- horrified
Istovremeno skoro 150 000 drugih reči ne pravi nikakav problem. Ako koristim rečnik sinonima ručno u Wordu, dobijam ispravne rezultate.
Kako da izbegnem izuzetak u COM Interop kodu i dobijem rezultate u programu? Može li neko da testira kod sebe da li program gore radi?
[Ovu poruku je menjao Goran Rakić dana 07.09.2012. u 18:51 GMT+1]
prezentacije, legalno bez troškova licenciranja