Beispiel #1
0
        /// <summary>
        /// 取得 Txt2Brl.exe 轉點字時輸出的錯誤資訊。
        /// </summary>
        /// <param name="errMsg"></param>
        /// <param name="invalidChars"></param>
        /// <returns></returns>
        private bool GetCvtErrors(ref string errMsg, ref List <CharPosition> invalidChars)
        {
            bool   hasError = false;
            string fname;

            errMsg = "";
            invalidChars.Clear();

            // 取得結果旗號以及錯誤訊息(如果有的話)
            fname = AppGlobals.GetTempPath() + Constant.Files.CvtResultFileName;

            if (!File.Exists(fname))
            {
                return(false);
            }

            using (StreamReader sr = new StreamReader(fname, Encoding.Default))
            {
                string errFlag = sr.ReadLine();
                if (String.IsNullOrEmpty(errFlag))
                {
                    return(false);
                }
                if (errFlag.Equals("1"))
                {
                    hasError = true;
                    errMsg   = sr.ReadToEnd();
                }
                sr.Close();
            }

            if (!hasError)
            {
                return(false);
            }

            // 取得所有轉換失敗的字元
            fname = AppGlobals.GetTempPath() + Constant.Files.CvtErrorCharFileName;

            if (!File.Exists(fname))
            {
                return(hasError);
            }

            using (StreamReader sr = new StreamReader(fname, Encoding.Default))
            {
                string   s;
                string[] parts;

                while (true)
                {
                    s = sr.ReadLine();
                    if (String.IsNullOrEmpty(s))
                    {
                        break;
                    }
                    parts = s.Split(' ');
                    if (parts.Length != 3)
                    {
                        throw new Exception("檔案格式不正確: " + fname);
                    }
                    CharPosition ch = new CharPosition
                    {
                        LineNumber = Convert.ToInt32(parts[0]),
                        CharIndex  = Convert.ToInt32(parts[1]),
                        CharValue  = parts[2][0]
                    };

                    invalidChars.Add(ch);
                }
                sr.Close();
            }

            return(hasError);
        }