[ Goran Rakić @ 07.09.2012. 17:30 ] @
Nakon pitanja kako da promenim font u VS2010 editoru, nastavljam sa pitanjima za koja ne bih očekivao da ću ih postavljati. :D

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.

Code (csharp):

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.
Code:

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]
[ Shadowed @ 07.09.2012. 20:22 ] @
VS 2010, .Net4.0, Word 2007 (znam, trebalo ti je 2010/12) - radi.
[ Goran Rakić @ 07.09.2012. 20:58 ] @
Probaću čim instaliram Office 2007. Ostalo je i kod mene isto, .Net 4.0 i VS2010.

Evo snimka uhvaćenog izuzetka ako nekome to pruži više informacija da mi pomogne. Ovaj ErrorCode -2146822464 baš lepo izgleda.



Greška je ista bilo da kao referencu dodam Office 12 ili Office 14 PIA.

[Ovu poruku je menjao Goran Rakić dana 07.09.2012. u 22:11 GMT+1]
[ Goran Rakić @ 07.09.2012. 22:20 ] @
Ovo stvarno radi uz Office 2007. Kako, zašto?

[ dusans @ 07.09.2012. 22:32 ] @
Hah, otvaram stack a tvoje pitanje na vrhu :)
[ Goran Rakić @ 07.09.2012. 22:56 ] @
Meni se čini da ovo ima veze sa homografima među značenjima.

Reč "elite" ima značenja "best (adj.)", "best (n.)" dok SynonymInfo interfejs može da predstavi samo jedno od ova dva. U Wordu 2007 ova dva značenja se prikazuju razdvojeno, dok ih Word 2010 i Word 2013 Preview prikazuju spojeno kao "best (adj./n.)".

Sve pomenute reči imaju homografe među značenjima. Ono što ne znam jeste da li među onih ~150 000 reči za koje dobijam rezultat postoji ovakav slučaj. Ukoliko postoji, onda nije to problem.