"System.ArgumentOutOfRangeException" произошло в mscorlib.dll
Заранее спасибо! Я пишу приложение для чтения текстового файла и записи в Excel. Для начала я просто пытаюсь прочитать первую строку.
Console.WriteLine правильно выводит строку (которая содержит пробелы между символами), но когда я пытаюсь извлечь символы из строки, я получаю эту ошибку: Дополнительная информация: Индекс и длина должны указывать на местоположение в строке.
while ((input = stream.ReadLine()) != null)
{
//ACH HEADER LINE
if (iCurRecLine == 0 && input.IndexOf(HeaderBeginKeyWord) >= 0)
{
Console.WriteLine(input);
RepDate = input.Substring(23, 6).Trim();
RecordTypeCode = input.Substring(0, 1).Trim();
PriorityCode = input.Substring(1, 2).Trim();
ImmDestination = input.Substring(3, 10).Trim();
ImmOrigin = input.Substring(13, 10).Trim();
FileCreatedDate = input.Substring(23, 6).Trim();
FileCreatedTime = input.Substring(29, 4).Trim();
FileIDModifier = input.Substring(33, 1).Trim();
RecordSize = input.Substring(34, 3).Trim();
BlockingFactor = input.Substring(37, 2).Trim();
FormatCode = input.Substring(39, 1).Trim();
Destination = input.Substring(40, 23).Trim();
Origin = input.Substring(63, 23).Trim();
ReferenceCode = input.Substring(86, 8).Trim();
...
}
}
Где я ошибся в этом?
1 ответ
Решение
Кажется, в содержимом файла, который вы читаете, нет проверки.
.SubString()
бросает ArgumentOutOfRangeException
если startIndex plus length indicates a position not within this instance.
Следовательно:
RepDate = input.Substring(23, 6).Trim();
Может легко потерпеть неудачу и бросить это исключение, если input
содержит только 10 символов.