Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/140: Рейтинг темы: голосов - 140, средняя оценка - 4.84
20 / 17 / 0
Регистрация: 15.08.2012
Сообщений: 122

Индекс и длина должны указывать на позицию в строке. Имя параметра: length

26.09.2013, 18:35. Показов 28478. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется такой вот метод:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public string EncryptionShuffle(string text, int[] key) {
                string result = null;
                // ************************************************************************
                int i, j, w, n, m;
                string s;
                j = 0; s = text;
                for (i = 1; i < text.Length; i++)
                {
                    j = i * 2;
                    n = key[j - 1];
                    m = key[j];
                    if (n > m)
                    {
                        w = n;
                        n = m;
                        m = w;
                    }
                    s = s.Substring(m + 1, text.Length - m) + s.Substring(n + 1, m - n) + s.Substring(1, n);
                    result = s;
                }
                // ************************************************************************
                return result;
            }
С помощью BreakPoint проверял работоспособность. Выводит следующую ошибку:
Индекс и длина должны указывать на позицию в строке. Имя параметра: length

Помогите пожалуйста устранить данную ошибку.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.09.2013, 18:35
Ответы с готовыми решениями:

Substring. Индекс и длина должны указывать на позицию в строке
Всем доброго времени суток! Так и не могу разобраться почему у меня выходит данная ошибка. public string D(string str) { ...

Substring. Индекс и длина должны указывать на позицию в строке
Почему ошибка? Как мне получить из строки абвгдеёжзийклмнопрс подстроку ноп public static void test() { ...

В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5
В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5 и так далее. Теперь...

15
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
26.09.2013, 19:27
Выбрасывает из этой строки?
C#
1
s = s.Substring(m + 1, text.Length - m) + s.Substring(n + 1, m - n) + s.Substring(1, n);
Если да, то проверьте значения переменных в выражении, возможно вы пытаетесь извлечь подстроку с неверным индексом (вне исходной строки)
0
20 / 17 / 0
Регистрация: 15.08.2012
Сообщений: 122
26.09.2013, 19:50  [ТС]
tezaurismosis, В text - я записываю слово = привет, а в key - записываю ключ = 543210 к примеру

Добавлено через 18 секунд
tezaurismosis, а так да, ошибка выходит именно там, где вы показали

Добавлено через 34 секунды
Даже если вести ключ - 654321, все равно ошибка

Добавлено через 57 секунд
C#
1
j = i * 2;
Тут я беру элементы, кратные 2
0
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
26.09.2013, 20:32
Цитата Сообщение от darkExpressI2P Посмотреть сообщение
for (i = 1; i < text.Length; i++)
{ j = i * 2;
Пусть text.Length == 10. Пусть i == 6 (условие не нарушено). Каково тогда будет j?
0
20 / 17 / 0
Регистрация: 15.08.2012
Сообщений: 122
26.09.2013, 20:35  [ТС]
memphis, У меня длина ключа = длине слова, там никак нарушения не может быть!
0
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
26.09.2013, 20:54
Тогда пардон, не вник.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
26.09.2013, 21:09
darkExpressI2P, запустите под отладкой и посмотрите индексы.....
0
20 / 17 / 0
Регистрация: 15.08.2012
Сообщений: 122
26.09.2013, 21:35  [ТС]
Psilon, Я итак через отладку смотрел. Не помогло...
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
26.09.2013, 22:02
1)в момент вылета исключения:
какова длина s
каково значение m
каково значение text.Length - m
каково значение n
2) записать как
C#
1
2
3
4
string s1 = s.Substring(m + 1, text.Length - m);
string s2 = s.Substring(n + 1, m - n);
string s3 = s.Substring(1, n);
result = s1 + s2 + s3;
и сказать. в какой строке падает. Приведя данные, которые я спросил выше.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
26.09.2013, 22:08
Цитата Сообщение от darkExpressI2P Посмотреть сообщение
C#
1
j = i * 2;
Тут я беру элементы, кратные 2
Что успешно выбросит индекс за пределы границ.
Цитата Сообщение от Psilon Посмотреть сообщение
и сказать. в какой строке падает.
на s1
darkExpressI2P, код совершенно не читаемый, что означают эти мифические буквы i, j, w, n, m?
Скажите, что вы хотите сделать этим кодом, возможно это поможет понять/переписать.
1
20 / 17 / 0
Регистрация: 15.08.2012
Сообщений: 122
26.09.2013, 22:11  [ТС]
Psilon, Падает здесь:
C#
1
 string s1 = s.Substring(m + 1, text.Length - m);
Подал в метод такие значения:
text = привет
key = 415362

m = 5
text.length = 6

Добавлено через 1 минуту
tezaurismosis, Мне дали пример кода на Pascal, вот сказали разбирайтесь с кодом и сделайте метод шифрования тасовкой.

Добавлено через 34 секунды
Вот что мне дали:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
…………………………………………….
const
       Lmax=100;
…………………………………………….
type
 TArr=array[1..Lmax] of integer;
…………………………………………….
{процедура-функция генерации ключа для шифрования тасовкой
 входной параметр L - длина блока исходного текста для зашифровки}
function Passwrd(L:integer):TArr;
var
     i:integer;
     arr:TArr;
begin
    
 for i:=1 to 2 do
      arr:=PerestRnd(L); // function PerestRnd(l:integer):TArr; -
                        // функция (определяемая пользователем) формирования 
                        // случайным образом L неповторяющихся целых чисел 
                        // в диапазоне от 1 до L,
                                  //  результат - в виде массива;
 
result:=arr;
end;
 
{**********************************************************}
 
{процедура-функция шифрования исходного текста txt,
  результат типа string - зашифрованный текст}
 
function SHTasov_TO(txt:string;passw:TArr):string;
var
      i,j,w,n,m:integer;
      s:string;
begin
     j:=0; s:=txt;
   for i:=1 to length(txt) do
   begin
     j:=i*2;
     n:=passw[j-1];
     m:=passw[j];
     if n>m then
            begin
               w:=n; n:=m; m:=w;
            end;
     s:=copy(s,m+1,length(txt)-m)+copy(s,n+1,m-n)+copy(s,1,n);
   end;
result:=s;
end;
 
{**********************************************************}
 
{процедура-функция расшифровки текста txt,
  результат типа string - расшифрованный текст}
function SHTasov_FROM(txt:string;passw:TArr):string;
var
      i,j,w:integer;
      n,m:longint;
      s:string;
 
begin
j:=0;   s:=txt;
   for i:=length(txt) downto 1 do
   begin
     j:=i*2;
     n:=passw[j-1];
     m:=passw[j];
     if n>m then
            begin
               w:=n; n:=m; m:=w;
            end;
   s:=copy(s,length(txt)-n+1,n)+copy(s,length(txt)-m+1,m- n)+copy(s,1,length(txt)-m);
   end;
 result:=s;
end;
0
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
26.09.2013, 22:31
Цитата Сообщение от darkExpressI2P Посмотреть сообщение
text = привет
Цитата Сообщение от darkExpressI2P Посмотреть сообщение
text.length = 6
Цитата Сообщение от darkExpressI2P Посмотреть сообщение
m = 5
Цитата Сообщение от darkExpressI2P Посмотреть сообщение
s.Substring(m + 1,
Так какой же символ находится по индексу 6(m + 1)?
0
20 / 17 / 0
Регистрация: 15.08.2012
Сообщений: 122
26.09.2013, 22:34  [ТС]
memphis, m = 5 => 5 + 1 = 6

Добавлено через 29 секунд
Помогите исправить код ((((
0
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
26.09.2013, 22:38
Исправить код лично я не смогу. Не мой уровень. Индексация массивов в Шарпе начинается с 0. Т.е. последний символ в строке имеет индекс 5.
0
20 / 17 / 0
Регистрация: 15.08.2012
Сообщений: 122
27.09.2013, 13:56  [ТС]
Я до сих пор нуждаюсь в помощи...(2-ой день)
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
27.09.2013, 18:12
darkExpressI2P, вам выше ответили...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2013, 18:12
Помогаю со студенческими работами здесь

Длина строки - как использовать length?
C++ изучала год назад, много позабыла, теперь вот снова понадобился. Столкнулась с одним непонятным явлением - я прекрасно помню, что для...

Где указывать имя файла xml?
Есть готовая программа тестирования и файл xml, который программа должна считывать и открывать в виндовс формс. Не могу понять, где мне...

Почему в функции с переменной не нужно указывать имя модуля?
import zipfile i = True if zipfile.is_zipfile('123.zip') == i: print(&quot;Всё прошло успешно&quot;) z = zipfile.ZipFile('123.zip',...

Где указывать имя хоста в Url'e для jdbc ?
java:/MyHost/comp/env/jdbc/MyBase или java:/comp/env/jdbc/MyHost/MyBase не работает ... куды ж его писать ???

Длина пятого и длина последнего слова в строке
Как определить длину пятого слова в строке и длину последнего слова в строке.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru