почему System.IndexOutOfRangeException

Я должен написать код ниже, когда я запускаю его, он говорит

System.IndexOutOfRangeException: L'index выходит за пределы таблицы.
в AddWindowsForm.MyForm.ReadCSV (StreamReader str) ind: \ weiweiwang \ signalisationferroviaire \ visual studio 2012 \ projects \ addwindowsform1213 \ addwindowsform1213 \ myform.h: строка 7738
в AddWindowsForm.MyForm.OpenFileDialogCSV_FileOk (Отправитель объекта, CancelEventArgs e) в d: \ weiweiwang \ signalisationferroviaire \ visual studio 2012 \ projects \ addwindowsform1213 \ addwindowsform1213 \ myform.h: строка 7728
в System.Windows.Forms.FileDialog.OnFileOk (CancelEventArgs e)
в System.Windows.Forms.FileDialog.HandleVistaFileOk (диалоговое окно IFileDialog)

Я не понимаю почему …

private: System::Void OpenFileDialogCSV_FileOk(System::Object^  sender, System::ComponentModel::CancelEventArgs^  e) {
InitialiserDonnees();
strFileDirectoryName=OpenFileDialogCSV->InitialDirectory+OpenFileDialogCSV->FileName;
StreamReader ^strReadFile=gcnew StreamReader (strFileDirectoryName);
String ^strL="";
MyForm::Text="Aide aux calculs des distances:" + System::IO::Path::GetFileName(OpenFileDialogCSV->FileName);
ReadCSV(strReadFile);
}public: void ReadCSV ( StreamReader ^str)
{
array<String^>^temp=gcnew array <String^> {"","","","","","","","","","",""};
String ^strL="";
//Read Info Poste et track
strL=str->ReadLine();
strL=str->ReadLine();
temp=strL->Split(';');
textBoxNomPoste->Text=temp[1];

strL=str->ReadLine();
temp=strL->Split(';');
textBoxNomVoie2->Text=temp[1];

strL=str->ReadLine();
temp=strL->Split(';');
comboBoxImpairPair->Text=temp[1];

strL=str->ReadLine();
temp=strL->Split(';');
ComboBoxNbDeclivite->Text=temp[1];
}

-1

Решение

System.IndexOutOfRangeException исключение означает, что вы обращаетесь к массиву или контейнеру с недопустимым индексом. То есть индекс относится к элементу, который не существует. В коде вы используете индексирование массива при доступе к temp массив. Вы пытаетесь получить доступ к элементу с индексом 1 здесь:

temp[1]

Ошибка сообщает вам, что temp не содержит элемент с индексом 1.

Вы назначены temp Вот:

temp=strL->Split(';');

Очевидно, что результат этого звонка Split() массив с менее чем 2 элементами Проверьте содержание strL чтобы понять, почему это так.

Обратите внимание, что эта строка кода:

array<String^>^temp=gcnew array <String^> {"","","","","","","","","","",""};

совершенно бессмысленно, потому что вы никогда не читаете значение temp перед присвоением другого значения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]