/// <summary> /// Считывает новую строку /// </summary> /// <returns>Результат</returns> public CsvReadRecordResult Read() { do { if (!this.GetNewLineFromFile()) { return(new CsvReadRecordResult { LineResult = CsvReadLineResult.Eof }); } }while (string.IsNullOrEmpty(this._fileLine)); List <string> fields = null; while (true) { this._builder.Clear(); CsvReadFieldResult result = this.ReadNewField(); if (result == CsvReadFieldResult.Success) { if (fields == null) { fields = new List <string>(); } fields.Add(this._builder.ToString()); if (this.NeedNewLine) { return(new CsvReadRecordResult { LineResult = CsvReadLineResult.Success, Fields = fields }); } } //else if (result == ReadFieldResult.DelimiterExpected) //{ // return new ReadRecordResult { FieldResult = result, LineNumber = this._lineNumber, LinePosition = this._position, LineResult = ReadLineResult.Error }; // int delimiterPosition = this._fileLine.IndexOf(';', this._position + 1); // this._position = (delimiterPosition > 0 ? this._position = delimiterPosition + 1 : this._fileLine.Length); //} else { return(new CsvReadRecordResult { FieldResult = result, LineNumber = this._lineNumber, LinePosition = this._errorPosition, LineResult = CsvReadLineResult.Error }); } } }
private CsvReadFieldResult ReadQuotedField() { this._position++; CsvReadFieldResult result = InnerReadQuotedField(); if (result == CsvReadFieldResult.Success && !this.NeedNewLine) { if (this._fileLine[this._position] != this._delimiter) { this._errorPosition = this._position + 1; return(CsvReadFieldResult.DelimiterExpected); } else { this._position++; } } return(result); }