Exemplo n.º 1
0
        /// <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
                    });
                }
            }
        }
Exemplo n.º 2
0
        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);
        }