🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1865閲覧

新規パソコンにプロジェクトをコピーしたら「0 で除算しようとしました」というエラーが出ます

byori

総合スコア72

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2021/01/22 06:07

表題通り、「0 で除算しようとしました。」が発生します。

発生する状況として、パソコンを買い換えたため新たに VS2015 をインストールしました。
そして、このエラーの発生したアプリをプロジェクトごとコピーしました。
もちろんその他のプロジェクトも全て新しいパソコンにコピーしています。

このプロジェクト以外は、特に問題ないようです。

エラーの起きる場所は、

WPF

1 2 hunspell = new Hunspell("en_us.aff", "en_us.dic"); 3 4 // カスタム辞書のデータを読む 5 string mei = dirPath + @"DataFiles\en_US_OpenMedSpel.dic"; 6 if (!System.IO.File.Exists(mei)) 7 { 8 using (System.IO.File.Create(mei)) { } 9 } 10 11 string[] lines = System.IO.File.ReadAllLines(mei); 12 foreach (var line in lines) 13 { 14 string moji = line.Trim(); // 前後の空白を消す 15 hunspell.Add(moji);    ここでエラーが発生します。hunspell は、ヌルではありません。 16 }

このアプリは、NHunspellWrapper クラスを使用しています。
新たにインストールしたのではなく前パソコンよりプロジェクトごとコピーしました。

「0 で除算しようとしました。」というエラーですが、ググってもなかなかいい解説が見つかりません。
このエラーがでる状況など体験談でもいいのでアドバイスください。

環境 Windows10 WPF C# VS2015

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/01/22 06:11 編集

エラーメッセージをそのままコピペで提示しましょう VSならスクリーンショットかな
Zuishin

2021/01/22 06:29 編集

Hunspell の Add メソッドにバグがあるんでしょう。もしくは moji が Add してはいけないものなんでしょう。
byori

2021/01/22 06:41

お世話になります。 エラーメッセージは、純粋に「0 で除算しようとしました。」です。 try catch の Exception e で e.Message に上記エラーメッセージが吐き出されています。 > Add メソッドにバグがあるんでしょう 前パソコンでは、この部分は動作していたので、新しいパソコンで起きる理由が不明なのです。 データも同じなので Add していけないもの!?ではないと思いますが…
y_waiwai

2021/01/22 06:44

Hunspellクラスにバグが有るってことですな。 そこんとこのコードを提示しよう
gentaro

2021/01/22 06:44

stacktrace読んで発生場所の特定もできないなら「このエラーがでる状況など体験談」なんか聞いても解決できると思えんけども。
Zuishin

2021/01/22 07:20

catch しているということは、例外が発生した場所もそこではない可能性があるということですね? たとえば読み込みに失敗してデータが得られなかった時、データ数で何かを割ろうとすると 0 除算になります。
byori

2021/01/28 06:05

時間が経過していますがまだ、理由がわかりません。 自分の思いとしては、初期化がうまくいってないように思えますが、確たるものはありません。 未解決のままですが、クローズします。
Zuishin

2021/01/28 08:11

実際のコードと違うサンプルが出されただけで一切の説明がないので、うまくできないとか、うまくいってないという意味がわかりませんが、例外が出た時にスタックトレースを読んでみてください。そうすれば実際にはどこで例外が出たのかがわかります。
byori

2021/01/28 23:45

お世話になります。 上記の件、「0で除算しました」のエラーを吐くのみだったので理由がわかりませんでしたが、 上記のコードを呼び出すとき下記のエラーが吐き出されるようになりました。 追加情報:ファイルまたはアセンブリ 'NHunspell, Version=0.9.2.0, Culture=neutral, PublicKeyToken=30800c0502dd389c'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。今現在は、ここまでしかわかりません。 下記のコードは NHunspellWrapper クラスで初期化時に呼ばれているものです。 上記のエラーは、testアプリの App.config に設定のないものについて言ってきています。 また、NHunspellWrapper WinForm で書かれていました。ツールボックスに spellWorker なるものが WinFormで使用できるようですが、 WPF ではそのようなコントロールは作成されていません。 どうやら初期化・使い方?が異なっているかもしれません。現時点では不明ですが、 質問の本題部分で、「パソコンを新しいものに変えて動作しなくなった」と上記の初期化の問題は同じものと思えず混乱しています。OSは同じですが、細かいバージョンまでは不明です。 public class NHunspellWrapper { public NHunspellWrapper() : this("en_US.aff", "en_US.dic", null, new SpellingFormBasic()) { } /// <param name="affFile">"en_us.aff"</param> /// <param name="dicFile">"en_us.dic"</param> public NHunspellWrapper(string affFile, string dicFile, ISpellingControl textEditor, ISpellingWindow spellForm) { try { hunspell = new Hunspell(affFile, dicFile); var chk = hunspell.Spell("with"); App.config は以下で全文 <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> </configuration>
Zuishin

2021/01/28 23:59 編集

それは 0 除算ではなく、必要なアセンブリが参照されていないという例外です。NHunspell を参照に追加してください。無ければインストールしてください。
byori

2021/02/01 00:02

お世話になります。 どうやら、NHunspellWrapper クラスを WPF 側から呼び出すのがうまくいかないようです。 ラッパークラスを使わず直接下記で呼び出すことでうまくいっているように思います。 以上でクローズします。ありがとうございました。 var hunspell = new Hunspell("en_us.aff", "en_us.dic"); string[] lines = System.IO.File.ReadAllLines("CustomWords-en_US.txt"); foreach (var line in lines) { hunspell.Add(line); }
guest

回答1

0

自己解決

お世話になります。

どうやら、NHunspellWrapper クラスを WPF 側から呼び出すのがうまくいかないようです。
ラッパークラスを使わず直接下記で呼び出すことでうまくいっているように思います。

以上でクローズします。ありがとうございました。
var hunspell = new Hunspell("en_us.aff", "en_us.dic");
string[] lines = System.IO.File.ReadAllLines("CustomWords-en_US.txt");
foreach (var line in lines)
{
hunspell.Add(line);
}

投稿2021/02/01 00:05

byori

総合スコア72

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問