public MasmParser(TextReader reader) { for (int i = 0; ; i++) { string temp_line = reader.ReadLine(); if (temp_line == null) { break; } string line = temp_line; // remove comments and empty lines if (line.Contains('/')) { line = temp_line.Substring(0, temp_line.IndexOf('/')); } if (!string.IsNullOrWhiteSpace(line)) { lines.Add((i, line)); } OriginalLines.Add(temp_line); } }
public void Decompile(string filepath) { using (FileStream stream = new FileStream(filepath, FileMode.Open)) { using (BinaryReader reader = new BinaryReader(stream, Encoding.Latin1)) { string signature = reader.ReadFixedString(15); if (signature != TRA_SIGNATURE) { Debug.Assert(false, "Invalid TRA signature!"); return; } for (; ;) { Int32 blockType = reader.ReadInt32(); Int32 blockSize = reader.ReadInt32(); if (blockType == (int)BlockType.Content) { for (; ;) { string original = reader.ReadEncryptedCString(); string translation = reader.ReadEncryptedCString(); if ((original.Length < 1) && (translation.Length < 1)) { break; } OriginalLines.Add(original); TranslatedLines.Add(translation); } } else if (blockType == (int)BlockType.Header) { GameID = reader.ReadInt32(); GameName = reader.ReadEncryptedCString(); } else if (blockType == (int)BlockType.Settings) { //TODO(adm244): read settings break; } else if (blockType == (int)BlockType.End) { break; } else { Debug.Assert(false, "Unknown block type encountered!"); break; } } } } }
public bool Add(string original, string translation) { if (string.IsNullOrEmpty(original) || string.IsNullOrEmpty(translation)) { return(false); } OriginalLines.Add(original); TranslatedLines.Add(translation); return(true); }
public Ctl(string filename) { Filename = filename; OriginalLines = File.ReadLines(filename).Select(x => x.TrimEnd()).ToList(); int v = OriginalLines.FindIndex(x => x.Substring(0, startMarker.Length) == startMarker); Preamble = OriginalLines.Take(v).ToList(); Body = OriginalLines.Skip(v).ToList(); vbpLines = Preamble.Select(x => new VbpLine(x)).ToList(); }
private void Button左_Click(object sender, RoutedEventArgs e) { // 减少控制器访问次数,失败时便于回滚 var returnedLines = OriginalLines; var translatedLines = TranslatedLines; // 同步内容 if (TranslatedTexts != this.textBox右.Text) { if (MessageBoxResult.No == MessageBox.Show("检测到右边已被修改,是否继续本操作?", "修改确认", MessageBoxButton.YesNo)) { return; } TranslatedTexts = this.textBox右.Text; } int leftLineIndex = 0, rightLineIndex = 0; for (; leftLineIndex < returnedLines.Count(); leftLineIndex++) { string leftLine = returnedLines[leftLineIndex]; if (leftLine.Contains(" --> ") || leftLine == "" || Regex.IsMatch(leftLine, @"^\d+$")) { continue; } try { returnedLines[leftLineIndex] = translatedLines[rightLineIndex++]; } catch (IndexOutOfRangeException) { MessageBox.Show("检测到右方行数与左边对应行数不一致,请重新检查译文的正确性!", "错误", MessageBoxButton.OK, MessageBoxImage.Error); return; } } if (leftLineIndex < OriginalLines.Count() || rightLineIndex < translatedLines.Length) { MessageBox.Show("检测到右方行数与左边对应行数不一致,请重新检查译文的正确性!", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } else { OriginalLines = returnedLines; } }
public MasmParser(string path) { int i = 0; foreach (var temp_line in File.ReadLines(path)) { string line = temp_line; // remove comments and empty lines if (line.Contains('/')) { line = temp_line.Substring(0, temp_line.IndexOf('/')); } if (!string.IsNullOrWhiteSpace(line)) { lines.Add((i, line)); } i++; OriginalLines.Add(temp_line); } }
public AGSTranslation(IEnumerable <string> originalLines, IEnumerable <string> translatedLines) { OriginalLines.AddRange(originalLines); TranslatedLines.AddRange(translatedLines); }
public Vbp(string filename) { Filename = filename; OriginalLines = File.ReadLines(filename).Select(x => x.TrimEnd()).ToList(); vbpLines = OriginalLines.Select(x => new VbpLine(x)).ToList(); }