Пример #1
0
        private void button3_Click(object sender, EventArgs e)
        {
            Bmodel   MM     = CurModel;
            CheckRes CR     = CheckTable;
            string   Cursec = cb_secs.SelectedItem.ToString();
            int      iSec   = 5;

            if (Cursec.Contains(" "))
            {
                string temp = Cursec.Remove(Cursec.IndexOf(' '));
                iSec = Convert.ToInt32(temp);//取得截面号
            }
            FolderBrowserDialog fbd = new FolderBrowserDialog();

            fbd.Description = "请选择文件存储位置";

            if (fbd.ShowDialog() == DialogResult.OK)
            {
                string curPath = fbd.SelectedPath;
                int    i       = 0;
                foreach (BSections sec in CurModel.sections.Values)
                {
                    List <int> curElems = CheckTable.GetElemsBySec(ref MM, sec.Num);//当前截面信息
                    if (curElems.Count == 0)
                    {
                        continue;
                    }
                    string FileName = Path.Combine(curPath, sec.Name + ".txt");
                    CodeCheck.WriteSecCheckRes(ref MM, ref CR, FileName, sec.Num);
                    i++;
                }
                MessageBox.Show(i.ToString() + "个截面数据输出完成。");
            }
        }
Пример #2
0
        //----------------------------------------------------------------------
        // 押されたキーを拾う
        //   (KeyPressは特殊キーは拾えない)
        private void Form_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (hangul_keyboard_instance == null)
            {
                // Hangul keyboard未表示
                if (CodeCheck.IsAlpah(e.KeyChar))
                {
                    if (this.inputArea.Focused == true)
                    {
                        // NOP
                    }
                    else
                    {
                        // 入力エリアにフォーカスがなくとも英数字は
                        // 入力可能とする
                        this.inputArea.Text += e.KeyChar;
                    }
                }

                return; // Hangul keyboard未表示時はかならずここで抜ける
            }

            // Hangul keyboardが表示されていて,かつ本体側にフォーカスがある場合
            // キーを拾う処理
            if (CodeCheck.IsAlpah(e.KeyChar))
            {
                inputKey += e.KeyChar;
            }
            else
            {
                return;
            }
            this.inputArea.Text = HYAM.Lingua.Hangul.KeyString2Hangul(inputKey);;
        }
Пример #3
0
        private void bt_CheckGo_Click(object sender, EventArgs e)
        {
            MainForm   mmf        = this.Owner as MainForm;//主窗口
            ModelForm1 mf         = mmf.ModelForm;
            TextBox    messagebox = mmf.MessageTool.Tb_out;

            MidasGenModel.model.Bmodel mm = mf.CurModel;
            if (tb_Elems.Text.Length == 0)
            {
                lb_out.Text = "提示:没有指定单元号!";
            }

            List <int> eles = SelectCollection.StringToList(tb_Elems.Text);
            int        num  = eles.Count;//选择单元数
            int        i    = 1;

            mmf.MessageTool.Tb_out.AppendText(Environment.NewLine + "************单元验算开始************");
            mmf.MessageTool.Tb_out.AppendText(Environment.NewLine + "  开始验算");
            foreach (int ele in eles)
            {
                //mf.CheckTable.CheckElemByNum(ref mm, ele);
                CodeCheck.RefreshDesignPara(ref mm, mf.CheckModel, ele);
                CodeCheck.CalDesignPara_lemda(ref mm, ele);
                CodeCheck.CalDesignPara_phi(ref mm, ele, 1); //计算y向轴压稳定系数
                CodeCheck.CalDesignPara_phi(ref mm, ele, 2); //计算z向轴压稳定系数

                mf.CheckTable.CheckElemByNum_N(ref mm, ele, ref mf.CheckModel);
                string info = "   " + i.ToString() + " of " + num.ToString() + " 验算完成!";
                //ReplaceLastLine(ref messagebox, info);
                mmf.MessageTool.Tb_out.AppendText(Environment.NewLine + info);
                i++;
            }
            mmf.MessageTool.Tb_out.AppendText(Environment.NewLine + "************单元验算结束************");
        }
Пример #4
0
        /// <summary>
        /// 按单元更新截面设计参数
        /// </summary>
        /// <param name="iEle">单元号</param>
        public void UpdataDesignPara(int iEle)
        {
            Bmodel   MM = CurModel;
            CheckRes CR = CheckTable;

            int         num      = iEle;//单元号
            double      len_y    = Convert.ToDouble(tb_leng1.Text);
            double      len_z    = Convert.ToDouble(tb_leng2.Text);
            double      Net_r    = Convert.ToDouble(tb_Net_r.Text);
            double      Gamma_y  = Convert.ToDouble(tb_gamma1.Text);
            double      Gamma_z  = Convert.ToDouble(tb_gamma2.Text);
            double      Betla_my = Convert.ToDouble(tb_betla1.Text);
            double      Betal_mz = Convert.ToDouble(tb_betla2.Text);
            double      Betal_ty = Convert.ToDouble(tb_betla3.Text);
            double      Betal_tz = Convert.ToDouble(tb_betla4.Text);
            double      Phi_by   = Convert.ToDouble(tb_phibx.Text);
            double      Phi_bz   = Convert.ToDouble(tb_phiby.Text);
            double      F        = Convert.ToDouble(tb_f.Text);       //强度设计值
            double      Gamma_re = Convert.ToDouble(tb_GammaRe.Text); //承载力调整系数
            double      Xita     = Convert.ToDouble(tb_Xita.Text);    //截面影响系数
            SecCategory cat      = SecCategory.b;

            switch (comboBox1.SelectedIndex)
            {
            case 0: cat = SecCategory.a; break;

            case 1: cat = SecCategory.b; break;

            case 2: cat = SecCategory.c; break;

            case 3: cat = SecCategory.d; break;

            default: break;
            }


            //更新其它参数
            FrameElement fele = CurModel.elements[num] as FrameElement;

            fele.DPs.SecCat_y   = cat;//截面类别
            fele.DPs.SecCat_z   = cat;
            fele.DPs.Ratio_Anet = Net_r;
            fele.DPs.Gamma_y    = Gamma_y;
            fele.DPs.Gamma_z    = Gamma_z;
            fele.DPs.Belta_my   = Betla_my;
            fele.DPs.Belta_mz   = Betal_mz;
            fele.DPs.Belta_ty   = Betal_ty;
            fele.DPs.Belta_tz   = Betal_tz;
            fele.DPs.fy         = F;//强度设计值
            fele.DPs.Gamma_re_1 = Gamma_re;
            fele.DPs.Gamma_re_2 = Gamma_re;
            fele.DPs.Yita       = Xita;//截面影响系数

            //更新长细比
            CodeCheck.CalDesignPara_lemda(ref MM, num, len_y, len_z);
            //更新受压稳定系数
            CodeCheck.CalDesignPara_phi(ref MM, num, 1);
            CodeCheck.CalDesignPara_phi(ref MM, num, 2);
        }
Пример #5
0
        // (*1) this.htmltext
        //  true  : <br> は1個のwordTable
        //  false : <, br, > と3個のwordTableになる

        //----------------------------------------------------
        // 文字種を判定
        private CharCategory  GetCharCategory(Char ch)
        {
            // 例外的な判定
            if (ch == '-')
            {
                return(CharCategory.Letter);      // ハイフンは英字扱い
            }

            if (CodeCheck.IsHangul(ch))
            {
                return(CharCategory.Hangul);
            }
            else if (CodeCheck.IsKanji(ch))
            {
                return(CharCategory.Kanji);
            }
            else if (CodeCheck.IsKatakana(ch))
            {
                return(CharCategory.Katakana);
            }
            else if (CodeCheck.IsPunctuation(ch))
            {
                return(CharCategory.Punctuation);
            }
            else if (CodeCheck.IsHiragana(ch))
            {
                if (ch == 'を')
                {
                    return(CharCategory.HiraganaWo);       // "を"は単独で分離。特別扱い
                }
                else
                {
                    return(CharCategory.Hiragana);
                }
            }
            else if (Char.IsSeparator(ch))
            {
                return(CharCategory.Separator);
            }
            else if (Char.IsControl(ch))
            {
                return(CharCategory.Control);
            }
            else if (Char.IsDigit(ch))
            {
                return(CharCategory.Digit);
            }
            else if (Char.IsLetter(ch))
            {
                return(CharCategory.Letter);
            }


            return(CharCategory.Other);
        }
Пример #6
0
        //----------------------------------------------------------------------
        private bool InputTextIsHangul(string searchword)
        {
            //  if( CodeCheck.IsAlpah(searchword) || CodeCheck.IsHangul(searchword) ){
            //        return true;
            //    }else{
            //        return false;
            //    }

            // OSの言語依存にする(2008.12.30)
            // 入力がハングルなら InputTextIsHangul true
            // 入力が漢字・ひらがな・カタカナならfalse
            //
            // 入力が数字・英語の場合は,OSに依存。
            //    ・OSが"ja-JP"ならtrue(ハングル扱い)
            //    ・OSが"ja-JP"以外ならfalse
            if (CodeCheck.IsHangul(searchword))
            {
                return(true);
            }

            if (this.cultureName == "ja-JP")
            {
                if (CodeCheck.IsAlpah(searchword) ||
                    CodeCheck.IsDigit(searchword)
                    )
                {
                    return(true);
                }

                if (CodeCheck.IsHiragana(searchword) ||
                    CodeCheck.IsKanji(searchword) ||
                    CodeCheck.IsKatakana(searchword)
                    )
                {
                    return(false);
                }
            }
            else
            {
                if (CodeCheck.IsAlpah(searchword) ||
                    CodeCheck.IsDigit(searchword)
                    )
                {
                    return(false);
                }
                if (CodeCheck.IsHiragana(searchword) ||
                    CodeCheck.IsKanji(searchword) ||
                    CodeCheck.IsKatakana(searchword)
                    )
                {
                    return(false);
                }
            }
            return(true);
        }
Пример #7
0
        private void TSMI_WriteEleRes_byEle_Click(object sender, EventArgs e)
        {
            Bmodel   mm = this.ModelForm.CurModel;
            CheckRes CR = this.ModelForm.CheckTable;

            string CurDir = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName;
            string myFile = Path.Combine(CurDir, "CodeCheck_byEle.txt");

            //输出验算结果
            CodeCheck.WriteAllCheckRes2(ref mm, ref CR, myFile);
            MessageTool.Tb_out.AppendText(Environment.NewLine + "验算文件写出到:" + myFile);
            //用记事本打开
            System.Diagnostics.Process.Start("notepad.exe", myFile);
        }
Пример #8
0
        private void button5_Click(object sender, EventArgs e)
        {
            BLoadComb    com = CurModel.LoadCombTable.getLoadComb(LCKind.STEEL, "sGen2");
            ElemForce    ef  = CurModel.CalElemForceComb(com, 4);
            SecForce     sf  = ef.Force_i;
            FrameElement fe  = CurModel.elements[4] as FrameElement;
            BSections    sec = CurModel.sections[fe.iPRO];
            double       s1  = CodeCheck.CalPointStrength_YW(sf, sec, 1, fe.DPs);
            double       s2  = CodeCheck.CalPointStrength_YW(sf, sec, 2, fe.DPs);
            double       s3  = CodeCheck.CalPointStrength_YW(sf, sec, 3, fe.DPs);
            double       s4  = CodeCheck.CalPointStrength_YW(sf, sec, 4, fe.DPs);

            return;
        }
Пример #9
0
        //输出所有构件验算参数设置
        private void bt_ParaOut_Click(object sender, EventArgs e)
        {
            Bmodel         MM  = CurModel;
            CheckRes       CR  = CheckTable;
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Title  = "请输入结果文件存储位置";
            sfd.Filter = "txt 文件(*.txt)|*.txt|All files (*.*)|*.*";

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                CodeCheck.WriteCheckPara(ref MM, ref CR, sfd.FileName);
            }
        }
Пример #10
0
        //读取截面设计设置参数
        private void button7_Click(object sender, EventArgs e)
        {
            Bmodel         MM  = CurModel;
            CheckRes       CR  = CheckTable;
            OpenFileDialog OPD = new OpenFileDialog();

            OPD.Title            = "选择截面验算参数文件路径";
            OPD.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);//获取我的文档
            OPD.Filter           = "txt 文件(*.txt)|*.txt|All files (*.*)|*.*";

            if (OPD.ShowDialog() == DialogResult.OK)
            {
                CodeCheck.ReadCheckPara(ref MM, ref CR, OPD.FileName);
            }
        }
Пример #11
0
        //------------------------------------------------------------------------
        // 押されたキーを拾う
        private void Form_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (CodeCheck.IsAlpah(e.KeyChar))
            {
                //  this.kj_form.inputKey =
                //        HYAM.Lingua.Hangul.Hangul2KeyString(this.kj_form.inputArea.Text);
                this.kj_form.inputKey += e.KeyChar;
            }
            else
            {
                return;
            }

            this.kj_form.inputArea.Text =
                HYAM.Lingua.Hangul.KeyString2Hangul(this.kj_form.inputKey);;
        }
Пример #12
0
 //----------------------------------------------------------------------
 // 押されたキーを拾う
 //   (KeyPressは特殊キーは拾えない)
 private void Form_KeyPress(object sender, KeyPressEventArgs e)
 {
     if (CodeCheck.IsAlpah(e.KeyChar))
     {
         if (this.inputArea.Focused == true)
         {
             // NOP (普通に入力できるため,ここでは何もしない)
         }
         else
         {
             // 入力エリアにフォーカスがなくとも英数字は
             // 入力可能とする
             this.inputArea.Text += e.KeyChar;
         }
     }
 }
Пример #13
0
        private void button1_Click(object sender, EventArgs e)
        {
            Bmodel         MM  = CurModel;
            CheckRes       CR  = CheckTable;
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Title  = "请输入结果文件存储位置";
            sfd.Filter = "txt 文件(*.txt)|*.txt|All files (*.*)|*.*";

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                int num = Convert.ToInt32(textBox12.Text);
                //UpdataDesignPara(num);//更新单元设计参数
                CodeCheck.WriteElemCheckRes(ref MM, ref CR, sfd.FileName, num);
            }
        }
Пример #14
0
        //------------------------------------------------------------------
        private WordChain WordDivider(WordTable wTable)
        {
            WordChain wc1 = null;

            #if DEBUG_LOG
            KJ_Analyzer.WriteDebugLog("WordDivider");
            #endif

            // 辞書検索なしの助詞チェック
            if (KJ_dict.inputIsHangul)
            {
                wc1 = KJ_pp.CheckPPwithoutDictKr(wTable);
            }

            // 3文字の「ハングルまたは漢字」なら特別チェック
            if (wTable.word.Length == 3 &&
                (CodeCheck.IsHangul(wTable.word) ||
                 CodeCheck.IsKanji(wTable.word))
                )
            {
                WordChain wcThree = Check3Chars(wTable);
                if (wcThree != null)
                {
                    return(wcThree);
                }
            }


            // 全体でmatchしないなら部分文字列で検索(再起 語分解あり)
            WordChain wc2 = null;
            wc2 = WordPartProc(wTable);

            // wtは最後の語テーブル。未変換なら再調査
            //        WordChain wc3 = CheckLastWord(wChain, wTable);


            // costが小さい方を採用
            WordChain rtnWc = WordChain.GetMinimunCostChain(wc1, wc2);

            return(rtnWc);
        }
Пример #15
0
        //------------------------------------------------------------------------
        // 辞書に見つからなかった語を自動変換する
        //   ハングル <---> カタカナ
        private WordTable ConvAutoConv(WordTable wt)
        {
            if (wt.IsTranslated())
            {
                return(wt);  // 変換済みなら何もしない
            }

            if (!this.sTrans.AutoConv)
            {
                return(wt);  // AutoConvをoffにしている場合は何もせず抜ける。
            }

            if (KJ_dict.inputIsHangul)
            {
                // K-->J方向
                if (CodeCheck.IsHangul(wt.word))
                {
                    wt.transWord = Hangul.Hangul2Kana(wt.word);
                }
            }
            else
            {
                // J-->方向
                if (wt.charCategory == CharCategory.Katakana)
                {
                    // カタカナの場合
                    wt.transWord = Kana.Kana2Hangul(wt.word);
                }
                else
                {
                    if (wt.charCategory == CharCategory.Hiragana)
                    {
                        // ひらがなの場合
                        wt.transWord = Kana.Hira2Hangul(wt.word);
                    }
                }
            }

            return(wt);
        }
Пример #16
0
        //--------------------------------------------------------------------
        // 語の変換   (語の分解あり)
        //   語分解で翻訳済み末尾がずれることがあるのでWordTableを返す
        //           ABCDEF という語に対し、
        //              ABCDE + F
        //              ABCD  + EF
        //              ABC   + DEF
        //               :       :
        //   と調べていき、最小コストの訳語がとれる分割を採用する
        //
        static public WordChain  WordPartProc(WordTable wt)
        {
            SearchResult sResult;
            String       str = wt.word;


            if (wt == null)
            {
                return(null);
            }
            if (wt.word != null && wt.word.Length == 1)    // 1文字検索はしない
            {
                return(null);
            }

            if (wt.IsTranslated() || wt.IsDigit())
            {
                return(null); // 翻訳済みまたは 数字なら 何もしない
            }

            #if DEBUG_LOG
            KJ_Analyzer.WriteDebugLog("WordPartProc:" + wt.word);
            #endif


            // 再起に備え,まず完全一致で検索
            sResult = KJ_dict.SearchFull(str);
            if (sResult != null)
            {
                wt.SetResult(sResult); // 全体でmatch
                WordChain wc = new WordChain(wt);
                return(wc);
            }

            // 部分語の2文字は分割しない
            if (wt.word != null &&
                wt.word.Length == 2 &&
                wt.divided != Divided.Non)
            {
                return(null);
            }

            // 3文字の「ハングルまたは漢字」なら特別チェック
            if (wt.word != null && wt.word.Length == 3 &&
                wt.divided != Divided.Non &&  // 部分語の3文字語は除外
                (CodeCheck.IsHangul(wt.word) ||
                 CodeCheck.IsKanji(wt.word))
                )
            {
                WordChain wc3 = Check3Chars(wt);
                if (wc3 != null)
                {
                    return(wc3);
                }
            }

//            int target_len=2;   // 2005.09.03 やっぱり1文字まで切らないとだめだ
            int target_len = 1;
            int str_len    = str.Length;

            int       minimumCost      = 9999;
            WordChain minimumCostChain = null;

            // 前から1文字ずつ落としつつ,検索。

            while (true)
            {
                int start = str_len - target_len;
//                if( start <= 1 ){  // 2005.09.03
                if (start <= 0)
                {
                    break;
                }
                // 文字列を分割する
                // str --> str2 + str3
                //       String str2 = str.Remove   (start,  target_len );
                //       String str3 = str.Substring(start,  target_len );
                // 前から分割に変えた(2005.08)
                String str2 = str.Remove(target_len, start);
                String str3 = str.Substring(target_len, start);  //あとできれいに

                // 前と後ろを、それぞれ検索
                WordChain wc2 = DividedWordSearch(str2);
                WordChain wc3 = DividedWordSearch(str3);

                #if DEBUG_LOG
                KJ_Analyzer.WriteDebugLog("str2/str3:" + str2 + "/" + str3);
                #endif

                WordTable wt2, wt3;
                if (wc2 == null)
                {
                    wt2 = new WordTable(str2);
                    wc2 = new WordChain(wt2);
                }
                if (wc3 == null)
                {
                    wt3 = new WordTable(str3);
                    wc3 = new WordChain(wt3);
                }

                // 分割情報設定
                if (wt.divided == Divided.Non)
                {
                    wc2.Head.divided = Divided.Lead;
                    wc3.Head.divided = Divided.Trail;
                }
                if (wt.divided == Divided.Lead)
                {
                    wc2.Head.divided = Divided.Lead;
                    wc3.Head.divided = Divided.Middle;
                }
                if (wt.divided == Divided.Middle)
                {
                    wc2.Head.divided = Divided.Middle;
                    wc3.Head.divided = Divided.Middle;
                }
                if (wt.divided == Divided.Trail)
                {
                    wc2.Head.divided = Divided.Middle;
                    wc3.Head.divided = Divided.Trail;
                }

                // wc2とwc3をつなぐ
                wc2.Add(wc3);

                //  wc2---wc3 のコストを計算
                int divChainCost = wc2.GetChainCost();
                if (minimumCost >= divChainCost)
                {
                    minimumCostChain = wc2;
                    minimumCost      = divChainCost;    //最小コストの更新
                }

                #if DEBUG_LOG
                KJ_Analyzer.WriteDebugLog("wc2:" + wc2.Head.word + "," + wc2.Head.Cost);
                KJ_Analyzer.WriteDebugLog("wc3:" + wc3.Head.word + "," + wc3.Head.Cost);
                KJ_Analyzer.WriteDebugLog("divChainCost:" + divChainCost);
                #endif


                target_len++;
            } // end of while


            // Chain中のwordが全て翻訳できていない
            if (minimumCostChain == null ||
                (minimumCostChain != null && !minimumCostChain.IsTranslated()))
            {
                return(null);
            }

            // 翻訳できていない部分chainを再起実行
            WordTable subT = minimumCostChain.Head;
            while (subT != null)
            {
                if (!subT.IsTranslated())
                {
                    WordChain subWc = WordPartProc(subT);
                    if (subWc != null)
                    {
                        WordTable wNext = subT.next;
                        minimumCostChain.Swap(subT, subWc);
                        subT = wNext;
                        continue;
                    }
                }
                subT = subT.next;
            }

            return(minimumCostChain);
        }
Пример #17
0
        //----------------------------------------------------------------------
        // 1つの語のデータの表示 (通常のKJ_dict用)
        //
        private string DisplayResult(string searchword, DocumentData sd)
        {
            StringBuilder rtn_str = new StringBuilder();

            rtn_str.Length = 0;

            string key_from  = ""; // 検索語
            string key_to    = "";
            string word_from = "";
            string word_to   = "";
            string detail    = "";
            string ex        = "";
            string cost      = "";
            string src       = "";
            string pos       = "";   // 品詞情報、格変化 (暫定)

            String indent = "";

            // 入力がハングルならfromがkey1(ハングル)
            // 入力が漢字・ひらがな・カタカナならfromがkey2(日本語)
            //
            // 入力が数字・英語の場合は,OSに依存。
            //    ・OSが"ja-JP"ならfromがkey1(ハングル)
            //    ・OSが"ja-JP"以外ならfromがkey2(日本語)
            if (this.inputIsHangul)
            {
                key_from  = sd.GetData("key1");
                key_to    = sd.GetData("key2");
                word_from = sd.GetData("word1");
                word_to   = sd.GetData("word2");
                ex        = sd.GetData("ex1");
                cost      = sd.GetData("cost2");
            }
            else
            {
                key_from  = sd.GetData("key2");   // Jp
                key_to    = sd.GetData("key1");   // Kr
                word_from = sd.GetData("word2");
                word_to   = sd.GetData("word1");
                ex        = sd.GetData("ex2");
                cost      = sd.GetData("cost1");
            }


            // 表示の見た目を整える。インデントつけたり、括弧をつけたり。

            // 入力語の表示

            rtn_str.Append(key_from);
            if (word_from != "")
            {
                // 詳細情報は以下の場合だけ
                // ・韓国OSのとき
                //   または
                // ・デバッグ情報表示時
                if (this.cultureName == "ko-KR" ||
                    CodeCheck.IsKanji(word_from) ||
                    Setting.debugInfo)
                {
                    // 詳細情報。ハングルの旧漢字、日本語の読み
                    rtn_str.Append("  〔 " + word_from + " 〕");
                }
            }
            rtn_str.Append("\n");


            // K-->Jの時の入力ハングルのカナ表記の表示
            if (this.Setting.withPronunciation)
            {
                if (this.inputIsHangul)
                {
                    if (this.Setting.PronunciationType == 1)
                    {
                        string kana = Hangul.Hangul2Kana(key_from);
                        rtn_str.Append(" (" + kana + ")\n");
                    }
                    else
                    {
                        rtn_str.Append(indent + " (" +
                                       sd.GetData("pronun1") + ")\n");
                    }
                }
            }


            // もしあれば品詞情報
            pos = MakePosString(sd);
            if (pos != null && pos != "")
            {
                rtn_str.Append(indent + "【 " + pos + " 】\n");
            }

            // もしあれば原形表示
            string root = "";

            if (inputIsHangul)
            {
                root = sd.GetData("root1");
            }
            else
            {
                root = sd.GetData("root2");
            }
            if (root != "")
            {
                string rootname = Pos.conjugationName("conjugation_root");
                rtn_str.Append(indent + "〔(" + rootname + ") "
                               + root + "〕\n");
            }

            // 結果の表示
            rtn_str.Append(indent + key_to);


            // 詳細情報は以下の場合だけ
            // ・韓国OSのとき
            //   または
            // ・デバッグ情報表示時
            if (word_to != "")
            {
                if (this.cultureName == "ko-KR" ||
                    CodeCheck.IsKanji(word_to) ||
                    Setting.debugInfo)
                {
                    rtn_str.Append(" 〔 " + word_to + " 〕");
                    // 詳細情報。ハングルの旧漢字、日本語の読み
                }
            }
            rtn_str.Append("\n");

            // J-->Kの時の結果ハングルのカナ表記の表示
            if (this.Setting.withPronunciation)
            {
                // 表示の設定がされているときだけ
                if (!this.inputIsHangul)
                {
                    if (this.Setting.PronunciationType == 1)
                    {
                        string kana = Hangul.Hangul2Kana(key_to);
                        rtn_str.Append(indent + " (" + kana + ")\n");
                    }
                    else
                    {
                        rtn_str.Append(indent + " (" +
                                       sd.GetData("pronun1") + ")\n");
                    }
                }
            }

            // その他付加情報
            detail = MakeDetailString(sd);
            if (detail != null && detail != "")
            {
                rtn_str.Append(indent + "( " + detail + " )\n");
            }
            if (ex != "")
            {
                rtn_str.Append(indent + "Ex. " + ex + "\n");
            }


            // 「デバッグ情報表示」 を選んだ場合
            if (Setting.debugInfo)
            {
                src = sd.GetData("src");
                if (src != "")
                {
                    rtn_str.Append(indent + "src:" + src + "\n");
                }
                if (cost != "")
                {
                    rtn_str.Append(indent + "cost:" + cost + "\n");
                }
                string pos2 = sd.GetPos(); // posの生データ
                if (pos2 != "")
                {
                    rtn_str.Append(indent + "pos:" + pos2 + "\n");
                }
            }

            rtn_str.Append("\n");

            prev_keyword = key_from;   // 記憶

            return(rtn_str.ToString());
        }
Пример #18
0
        //---------------------------------------------------------------------
        // 完全一致で辞書を引く
        //     hashがあればそちら優先
        //
        //     dict_small_w.Searchのラッパー。
        //     KJ_trans(KJ_form2/KJ_browser)用
        //
        static public SearchResult  SearchFull(String str)
        {
            if (inputIsHangul)
            {
                // K-->Jモードの時はひらがなカタカナ漢字はそのまま返す。
                //   KJ_form2/KJ_browserで韓日翻訳方向でひらがなをハングル化しないように
                if (CodeCheck.IsHiragana(str) ||
                    CodeCheck.IsKatakana(str) ||
                    CodeCheck.IsKanji(str))
                {
                    return(null);   // そのまま返す
                }
            }
            else
            {
                if (CodeCheck.IsHangul(str))
                {
                    return(null);   // そのまま返す
                }
            }


            if (KJ_dict.HashAvailable)
            {
                // Hashを使用する場合
                SearchResult hashedResult = (SearchResult)KJ_dict.dictHash[str];
                if (hashedResult == null)
                {
                    // nop
                }
                else
                {
                    // 既に辞書引き済み
                    if (hashedResult.return_code == -1)
                    {
                        return(null);
                    }
                    else
                    {
                        return(hashedResult);
                    }
                }
            }

            // 本当の辞書引き
            SearchResult result = dict_instance_w.Search(SearchType.full, str);

            if (KJ_dict.HashAvailable)
            {
                // Hashを使用する場合, 結果を記憶する
                KJ_dict.dictHash[str] = result;
            }

            if (result.return_code == -1)
            {
                return(null);   // not found
            }

            // 完全一致で見つかった
            return(result);  // 検索結果を返す
        }