/// <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; } }
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++; } }
/// <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)); }