Ejemplo n.º 1
0
        /// <summary>
        /// 载入文件
        /// </summary>
        /// <param name="filePath">文件路径</param>
        public void LoadFile(string filePath)
        {
            try
            {
                mCodeData.Clear();

                GC.Collect();

                StreamReader fp   = new StreamReader(filePath, Encoding.Default);
                string       line = string.Empty;

                while (!fp.EndOfStream)
                {
                    line = fp.ReadLine();

                    if (line == string.Empty || line[line.Length - 1] != '\n')
                    {
                        line += '\n';
                    }

                    List <byte> lineData = new List <byte>();
                    lineData.AddRange(UHelper.TanslateString(line));

                    mCodeData.Add(lineData);
                }

                fp.Close();
                fp.Dispose();

                if (mCodeData.Count == 0)
                {
                    List <byte> oneLine = new List <byte>();
                    oneLine.Add(UConfig.NewLine);
                    mCodeData.Add(oneLine);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 2
0
        public InsertRangeStringCommand(UCodeManager codeManager, URank start, string insertString)
        {
            this.mCodeManager  = codeManager;
            this.mStart        = start;
            this.mEnd          = start;
            this.mInsertString = insertString;

            byte[] data = UHelper.TanslateString(insertString);

            for (int i = 0; i < data.Length; i++)
            {
                if (data[i] == UConfig.NewLine)
                {
                    this.mEnd.Row++;
                    this.mEnd.Col = 0;
                    continue;
                }

                this.mEnd.Col++;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 插入多行字符串
        /// </summary>
        /// <param name="start">开始位置</param>
        /// <param name="rangeStr">字符串</param>
        public void InsertRangeString(URank start, string rangeStr)
        {
            int row = start.Row;
            int col = start.Col;

            byte[] data = UHelper.TanslateString(rangeStr);

            for (int i = 0; i < data.Length; i++)
            {
                mCodeData[row].Insert(col, data[i]);
                col++;

                if (data[i] == UConfig.NewLine)
                {
                    // 遇到换行符,首先剪切之后的数据到下一行
                    List <byte> newLine = new List <byte>();

                    for (int n = col; n < mCodeData[row].Count; n++)
                    {
                        newLine.Add(mCodeData[row][n]);
                    }

                    mCodeData[row].RemoveRange(col, mCodeData[row].Count - col);
                    mCodeLines[row] = mParser.ParseLine(row);

                    row++;
                    col = 0;

                    mCodeData.Insert(row, newLine);
                    mCodeLines.Insert(row, new UCodeLine());
                    mCodeLines[row] = mParser.ParseLine(row);

                    continue;
                }
            }

            mCodeLines[row] = mParser.ParseLine(row);
            mCoder.SetCursorPos(new URank(row, col));
        }