Member 10779576 Ответов: 1

Как сделать так, чтобы индекс решения находился за пределами массива


string vertex = "select vertex_path from Tbl_AllGraphInfo where Graph_Id='" + Graph_Id + "'";
            SqlCommand cmd = new SqlCommand(vertex,con11);
            con11.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                fullpath = dr.GetString(0);

            }
            dr.Close();
//            string actresult = ((string)cmd.ExecuteScalar());
            con11.Close();
            int counter = 0;
            string[] array = fullpath.Split(';');
            string[] array2 = new string[2];
            List<string> list = new List<string>();
            for (int i = 0; i < array.Length; i++)
            {
               array2= array[i].Split(',');
               list.Add(array2[1]);


            }
            counter = 0;

            string[] pattern = (string[])list.ToArray();


Что я уже пробовал:

Индекс находился за пределами массива

1 Ответов

Рейтинг:
10

OriginalGriff

Используйте отладчик и пройдите через ваше приложение: мы не можем этого сделать, так как у нас нет доступа к вашим данным.
Поместите точку останова в первую строку этого кода и запустите ее в отладчике. Когда выполнение достигнет точки останова, оно остановится и позволит вам получить контроль. Используйте отладчик, чтобы изучить содержимое переменных, и шаг за шагом проходите через программу, выясняя, что вы ожидаете, прежде чем выполнить каждую из них.
Неужели вы ожидали, что произойдет? Если да, то переходите к следующей строке. Если нет, то почему? Что же произошло? Что было в переменных, которые привели к этому?

Мы не можем сделать ничего из этого для вас - у нас нет доступа к вашим данным, и я не думаю, что ошибка в этом коде - она происходит в строке, которую Вы нам не показали. Так что попробуйте и посмотрите, что вы можете узнать!

Кстати: не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.


Member 10779576

есть 45 вершинный путь, но в цикле for это займет 46 элемент "проходит" цикл for-не тормоз, он примет значение, что означает "" vaue. я иду через баркпоинт.. кон я пользуюсь такими.длина-1; в цикле for

OriginalGriff

Извините - это не имеет никакого смысла, не видя вашего экрана - что я не могу сделать.
Помните, я вижу только то, что вы печатаете!
Поэтому попробуйте еще раз и объясните простыми шагами, что именно происходит и что находится в соответствующих переменных, когда это происходит. В частности, посмотрите на содержимое массива [i], Прежде чем каждый раз вызывать Split.