2016-03-31 5 views
-1

Ich muss das korrekte buchstabierspezifische Wort aus der Liste ermitteln. Wenn das Wort falsch ist, schreibe ich in eine Datei. Ich benutzte Klasse Rechtschreibprüfung, das ist mein Code:Warum SpellChecker (C#) Wörter falsch definiert?

public class SpellChecker : IDisposable 
{ 
    System.Type TWord = null; object com_app = null; 

    private static SpellChecker Checker = new SpellChecker(); 
    private SpellChecker() 
    { 
     try 
     { 
      TWord = Type.GetTypeFromProgID("Word.Application"); 
      com_app = Activator.CreateInstance(TWord); 
     } 
     catch { com_app = null; } 
    } 

    public static SpellChecker GetChecker() { return Checker; } 
    public void Dispose() 
    { 
     if (com_app != null) 
     { 
      object[] arg = { null, null, null }; 
      TWord.InvokeMember("Quit", BindingFlags.InvokeMethod, 
       null, com_app, arg); 
      com_app = null; 
     } 
    } 
    public bool CheckWord(string word) 
    { 
     object[] arg = { word }; 
     return (bool)TWord.InvokeMember("CheckSpelling", 
      BindingFlags.InvokeMethod, null, com_app, arg); 
    } 
} 

aber auf dem gleichen Wort arbeiten sie auf verschiedenen, wenn ich Liste Setter (mit Wort) oder nur ein Wort. In der Prozess-Debugging sehe ich, dass CheckWord mich in einem Fall wahr und falsch in einem anderen Fall geben. Aber es ist ein Wort, ich bin sicher.

var allWord = GetWords(xdoc); 
      foreach (var word in allWord) 
      { 
       if (!spellChecker.CheckWord(word)) 
       { 
        result.WriteLine(word); 
       } 
      } 
+0

was ist das Wort? – user1666620

Antwort

0

Ich erkannte. In manchen Fällen gibt CheckWord eine falsche Antwort. Zum Beispiel muss ich russische und englische Wörter überprüfen. Wenn ich List list = List() {"GSM \ MPG4 \ LTE", "Привет"} gebe, dann nennt man mich beim ersten Wort in der Liste "true", aber das zweite Wort ist "false".

Verwandte Themen