Ряд пользователей ПК при отладке какой-либо из своих программ (или при запуске какого-либо софта) могут столкнуться с ошибкой «List Index out of bounds(-1,0)». Обычно она связана с неточностями, допущенными разработчиками при написании кода программы. Но также бывают и ситуации, когда появление ошибки связано с некорректной работой на ПК ряда программных продуктов. В этом материале я расскажу, что за ошибка, каковы причины её возникновения, и как её исправить на вашем ПК.
- Что это за ошибка
- Как исправить ошибку «List index out of bounds(-1,0)»
- Другие способы исправить ошибку
- Заключение
Что это за ошибка
В переводе текст данной ошибки звучит как «списочный номер вне допустимых границ», и обычно означает ситуацию, когда в коде программы одно из её значений установлено некорректно. Например, разработчик программы где-либо допустил ошибку при работе с циклом, или какая-либо часть программы работает с переменной, которая удалена или не существует.
Также причиной данной проблемы может быть неправильная установка проблемной программы, а также ситуация, при которой какой-либо софт на вашем ПК конфликтует с данной программой, вследствие чего возникает рассматриваемая мной дисфункция.
Как исправить ошибку «List index out of bounds(-1,0)»
Если вы разработчик программного кода, и получили данную ошибку во время трассировки, рекомендую ещё раз проверить текст вашей программы на наличие ошибок. К примеру, в теле программы вы пытаетесь работать с теми строками, которых, de facto, не существует.
Если ошибка найдена не была, тогда стоит обратиться с вашей программой на форумы программистов, работающих в одной с вами программной среде (использующих один API). Обычно там вас попросят предоставить кусок программы, в работе которой возникает ошибка «List index out of bounds», и после ознакомления с его текстом дадут конкретный совет, где находится неверно указанное вами программное значение.
Другие способы исправить ошибку
Если же данная ошибка возникла при работе установленной на компьютер внешней программы, рекомендую сделать следующее:
- Переустановите проблемную программу. Рекомендую деинсталлировать её стандартным путём, перезагрузить ваш компьютер, а затем заново установить данную программу. Особенно это касается сбоев с возникновением ошибки в работе «Skype»;
- Запускайте данную программу от имени администратора. Наведите курсор на её ярлык на рабочем столе, кликните правой клавишей мыши, и в появившемся меню выберите «Запуск от имени администратора»;
Используйте запуск программы от имени администратора
- Запустите вашу программу в режиме совместимости с более ранней версией ОС. Наведите курсор на иконку программы на рабочем столе, нажмите правую клавишу мыши, выберите «Свойства». В открывшемся окне перейдите на вкладку «Совместимость», и установите галочку рядом с опцией «Запустить программу в режиме совместимости с», выбрав более раннюю версию ОС. Сохраните изменения, нажав на «Ок», и попытайтесь запустить проблемную программу;
- Обновите Java на вашем компьютере (скачайте самую свежую версию «Java» с ресурса java.com/ru/download/);
- Попробуйте удалить файл настроек проблемной программы (он может иметь расширение .ini). Программа должна вновь создать данный файл, и ошибка «List Index» может быть устранена;
- Узнайте, не было ли патчей для проблемной программы, исправляющих указанный баг (при необходимости, найдите и установите такой патч на ваш ПК);
- Проверьте ваш компьютер на наличие вирусных программ. Помогут Dr.Web CureIt!, Malwarebytes Anti-Malware, AdwCleaner и другие аналогичные продукты.
Заключение
В данном материале я рассмотрел, что за ошибка List index out of bounds, и привёл инструкцию по её устранению. В большинстве случаев причиной возникновения проблемы является некорректный программный код, созданный разработчиком на каком-либо из языков программирования. Рекомендуется ещё раз внимательно проверить значения, использованные в теле программы, а при необходимости обратиться на форум программистов, предоставив им для анализа проблемный кусок кода. Обычно решение быстро находиться, позволяя избавиться от ошибки на вашем ПК.
При попытке запуска определенных приложений на вашем компьютере может появиться ошибка «Список за пределами списка». Эта ошибка не позволит вам запускать ваши любимые приложения, поэтому сегодня мы собираемся показать вам, как исправить эту ошибку в Windows 10.
Ошибка индекса списка вне границ может появиться практически в любом приложении, и, говоря об этой ошибке, вот некоторые распространенные проблемы, о которых сообщили пользователи:
- Перечислите индекс за пределами (0), (-1), 1, (2), (3) — эта проблема может возникать из-за вашего антивируса, и, если вы столкнулись с ним, отключите или удалите антивирус и проверьте, помогает ли это.
- Игровой производитель, GTA V, индекс списка ошибок Resident Evil 6 вне пределов — иногда эта проблема может возникать в определенных приложениях или играх. Если это произойдет, переустановите приложение, которое выдает эту ошибку, и проверьте, помогает ли это.
- Индекс списка ошибок времени выполнения за пределами. Эта проблема может иногда появляться, потому что приложение, которое вы пытаетесь запустить, не полностью совместимо с Windows 10. Чтобы это исправить, просто запустите приложение в режиме совместимости и проверьте, помогает ли это.
- Индекс списка за пределами 1 Realtek HD Audio Manager — Как мы уже упоминали, эта проблема может затронуть практически любое приложение, и, если у вас возникла эта проблема, обновите уязвимое приложение до последней версии и проверьте, помогает ли это.
Список индексов выходит за границы ошибки, как это исправить?
- Удалить файлы System Mechanic
- Проверьте свой антивирус
- Попробуйте запустить приложение в режиме совместимости
- Обновите приложение до последней версии
- Переименовать каталог Skype
- Переустановите проблемное приложение
- Удалить временные файлы
- Выполните Чистую загрузку
Решение 1 — Удалить файлы System Mechanic
По словам пользователей, при попытке запустить System Mechanic может появиться ошибка L ist index of bounds. Кажется, что эта ошибка вызвана некоторыми файлами System Mechanic, которые могут быть повреждены, поэтому для решения этой проблемы вам нужно найти и удалить эти файлы с вашего ПК.
Для этого просто выполните следующие действия:
- Откройте проводник и перейдите в каталог C: ProgramDataiolo. Этот каталог по умолчанию скрыт, поэтому вам нужно его раскрыть. Просто перейдите на диск C: и затем выберите View и проверьте Hidden items.
- Как только вы войдете в этот каталог, найдите файлы Smgthints.xml и Status.xml и удалите их.
После удаления этих файлов проверьте, сохраняется ли проблема. Имейте в виду, что это решение работает только для программного обеспечения System Mechanic, поэтому, если другая проблема дает вам эту проблему, вам придется использовать другое решение.
- ЧИТАЙТЕ ТАКЖЕ: ИСПРАВЛЕНИЕ: Adobe Error 2060 не позволяет Skype работать
Решение 2 — Проверьте свой антивирус
Если вы получаете ошибку List index of bounds на вашем ПК, возможно, проблема в антивирусном программном обеспечении. Иногда ваш антивирус может блокировать определенные файлы, что препятствует нормальной работе приложений.
Чтобы проверить, является ли ваш антивирус проблемой, вам нужно отключить определенные антивирусные функции или даже вообще отключить антивирус. Если это не поможет, возможно, вам даже придется удалить сторонний антивирус. Это совершенно безопасно сделать в Windows 10, поскольку Защитник Windows по-прежнему будет защищать вашу систему, даже если вы удалите антивирус.
После того, как вы удалите антивирус, проверьте, сохраняется ли проблема. Если удаление антивируса решает проблему, вам следует подумать о переходе на другое антивирусное решение. Bitdefender предлагает отличную защиту и никак не повлияет на ваши приложения, поэтому, если вы ищете надежный антивирус, рекомендуем вам попробовать Bitdefender.
- Получить сейчас Bitdefender
Решение 3. Попробуйте запустить приложение в режиме совместимости
Список индексов за пределами границ может иногда появляться, если приложение, которое вы пытаетесь запустить, не полностью совместимо с Windows 10. Это может случиться со старыми приложениями, но вы можете решить проблему, просто запустив его в режиме совместимости.,
Если вы не знаете, режим совместимости — это специальная функция, которая позволяет запускать старые приложения в Windows 10, и вы можете активировать режим совместимости, выполнив следующие действия:
- Щелкните правой кнопкой мыши приложение, которое отправляет вам это сообщение, и выберите « Свойства» в меню.
- Перейдите на вкладку « Совместимость » и установите флажок « Запустить эту программу в режиме совместимости». Теперь выберите более старую версию Windows. Нажмите Apply и OK, чтобы сохранить изменения.
По мнению пользователей, использование режима совместимости может решить эту проблему для вас, но вам, возможно, придется экспериментировать с другими настройками, пока не найдете тот, который подходит именно вам.
Решение 4. Обновите приложение до последней версии.
Если вы получаете ошибку List index of bounds, возможно, проблема в приложении, которое вы пытаетесь запустить. Некоторые приложения могут выдавать эту ошибку, если они сталкиваются с ошибками или сбоями. Лучший способ избежать сбоев — поддерживать приложение в актуальном состоянии.
Если вы столкнулись с этой проблемой, попробуйте загрузить последнюю версию приложения и установить последние обновления. После установки обновлений проверьте, сохраняется ли проблема.
Решение 5 — Переименуйте каталог Skype
Многие пользователи сообщали об ошибке List index of bounds при попытке запустить Skype. Эта ошибка может возникать, если ваши файлы повреждены, но вы можете исправить проблему, переименовав каталог Skype. Для этого просто выполните следующие действия:
- Закройте Skype полностью на вашем компьютере.
- Нажмите клавишу Windows + R. Теперь введите % appdata% и нажмите Enter или нажмите OK.
- Найдите каталог Skype и измените его имя на skype.old.
- После этого снова запустите Skype и проверьте, сохраняется ли проблема.
Это простое решение, но имейте в виду, что оно работает только со Skype. Если у вас есть эта проблема с любым другим приложением, вы можете попробовать использовать другое решение.
- Читайте также: 4 решения для исправления ошибок Windows 10 0xc004e016 и 0xc004c003
Решение 6 — Переустановите проблемное приложение
По словам пользователей, иногда единственный способ решить эту проблему — переустановить проблемное приложение. Ошибка индекса списка вне границ может появиться практически в любом приложении, и иногда единственным способом решения этой проблемы является ее удаление.
Есть несколько способов сделать это, но наиболее эффективным является использование программного обеспечения для удаления, такого как Revo Uninstaller. В случае, если вы не знаете, программа удаления может удалить любое приложение с вашего ПК, но также удалит все файлы и записи реестра, связанные с ним.
- Получить сейчас версию Revo Unistaller Pro
После удаления приложения установите последнюю версию еще раз, и проблема должна быть решена окончательно.
Решение 7 — Удалить временные файлы
По словам пользователей, из-за ваших временных файлов может появиться ошибка List index of bounds. Многие приложения создают временные файлы, и эти файлы могут иногда вызывать различные проблемы. Чтобы исправить эту и многие другие проблемы, настоятельно рекомендуется удалить все временные файлы. Для этого просто выполните следующие действия:
- Нажмите клавишу Windows + R и введите % temp%. Нажмите Enter или нажмите ОК.
- Выберите все файлы и удалите их.
- Теперь снова нажмите Windows Key + R и введите TEMP. Нажмите Enter или нажмите ОК.
- Выберите все файлы и удалите их.
После этого проверьте, решена ли проблема. Если вы хотите, вы также можете использовать Disk Cleanup для очистки временных файлов и устранения этой проблемы. Если вам нужен продвинутый инструмент, который будет очищать временные файлы вместе со старыми и ненужными файлами, мы рекомендуем вам попробовать CCleaner. Этот инструмент не только очистит ваш диск, но также проверит ваш реестр на наличие ошибок и очистит ваш кеш, тем самым ускоряя работу вашего ПК.
- Скачать бесплатную версию CCleaner
Решение 8 — Выполните Чистую загрузку
Если вы продолжаете получать ошибку List index of bounds, возможно, это проблема стороннего приложения на вашем компьютере. Чтобы найти проблемное приложение, рекомендуется выполнить чистую загрузку и отключить все запускаемые приложения и службы. Вы можете сделать это, выполнив следующие действия:
- Нажмите клавишу Windows + R. Введите msconfig и нажмите OK или нажмите Enter.
- Откроется окно « Конфигурация системы». Перейдите на вкладку « Службы » и установите флажок « Скрыть все службы Microsoft». Теперь нажмите кнопку Отключить все.
- Теперь перейдите на вкладку « Автозагрузка » и нажмите « Открыть диспетчер задач».
- Когда откроется диспетчер задач, вы увидите список запускаемых приложений. Щелкните правой кнопкой мыши первое приложение в списке и выберите « Отключить» в меню. Повторите это для всех приложений запуска.
- После того, как вы отключите все запускаемые приложения, вам нужно вернуться в окно System Configuration. Нажмите Apply и OK, чтобы сохранить изменения и перезагрузить компьютер.
После перезагрузки компьютера проверьте, не устранена ли проблема. Если проблема не появляется, это означает, что ее вызывало одно из приложений или служб запуска. Чтобы точно определить причину, рекомендуется включать приложения и службы по одному или группами, пока вы не найдете причину проблемы.
Как только вы найдете его, удалите проблемное приложение, и проблема должна быть окончательно решена.
Как вы можете видеть, List index of the bounds ошибка может быть довольно проблематичной и препятствовать запуску вашего любимого приложения. Однако вы должны быть в состоянии решить эту проблему, просто переустановив проблемное приложение или обновив его. Если это не сработает, не стесняйтесь попробовать любое другое решение из этой статьи.
ЧИТАЙТЕ ТАКЖЕ:
- Исправить код ошибки 0xc004e016 в Windows 10
- ИСПРАВЛЕНИЕ: Dbghelp.dll Фатальная ошибка в Windows 10
- Полное исправление: ошибки WSClient.DLL в Windows 10, 8.1
by Milan Stanojevic
Milan has been enthusiastic about technology ever since his childhood days, and this led him to take interest in all PC-related technologies. He’s a PC enthusiast and he… read more
Updated on November 16, 2021
- The List index out of bounds error can appear when trying to run certain applications on your PC.
- To quickly solve it, feel free to remove System Mechanic files and check your current antivirus.
- Head on to our Troubleshooting Boot Errors section too and you won’t walk away disappointed.
- Don’t waste your time and visit our Windows 10 Errors Hub for plenty of other useful solutions.
XINSTALL BY CLICKING THE DOWNLOAD FILE
This software will repair common computer errors, protect you from file loss, malware, hardware failure and optimize your PC for maximum performance. Fix PC issues and remove viruses now in 3 easy steps:
- Download Restoro PC Repair Tool that comes with Patented Technologies (patent available here).
- Click Start Scan to find Windows issues that could be causing PC problems.
- Click Repair All to fix issues affecting your computer’s security and performance
- Restoro has been downloaded by 0 readers this month.
List index out of bounds error will prevent you from running your favorite applications, so today we’re going to show you how to fix this error on Windows 10.
Well, it can appear in almost any application, and speaking of this error, here are some common problems that users reported:
- List index out of bounds (0), (-1), 1, (2), (3) – This issue can appear due to your antivirus, and if you encounter it, disable or uninstall your antivirus and check if that helps.
- Game maker, GTA V, Resident Evil 6 error list index out of bounds – Sometimes this problem can appear with certain applications or games. If this happens, reinstall the application that is giving you this error and check if that helps.
- Runtime error list index out of bounds – This problem can sometimes appear because the application you’re trying to run isn’t fully compatible with Windows 10. To fix that, just run the application in Compatibility mode and check if that helps.
- List index out of bounds 1 Realtek HD Audio Manager – As we already mentioned, this issue can affect almost any application, and if you’re having this issue, update the affected application to the latest version and check if that helps.
How can I fix the List index out of bounds error?
- Remove System Mechanic files
- Delete the temporary files
- Check your antivirus
- Try running the application in Compatibility mode
- Update the application to the latest version
- Rename the Skype directory
- Reinstall the problematic application
- Perform a clean boot
1. Remove System Mechanic files
- Open File Explorer and go to
C:ProgramDataiolo
This directory is by default hidden, so you’ll need to reveal it. Simply go to the C: drive and then choose View and check Hidden items. - Once you enter this directory, look for Smgthints.xml and Status.xml files and remove them.
According to users, List index out of bounds error can appear when trying to run System Mechanic.
It seems that this error is caused by certain System Mechanic files that can become corrupted, so to fix this problem you need to find and remove those files from your PC.
After removing these files, check if the problem is still there.
Keep in mind that this solution only works for System Mechanic software, so if another application is giving you this problem, you’ll have to use a different solution.
2. Delete the temporary files
- Press Windows Key + R keyboard shortcut and enter %temp%. Press Enter or click OK.
- Select all files and delete them.
- Now press Windows Key + R again and type TEMP. Press Enter or click OK.
- Select all files and delete them.
According to users, List index out of bounds error can appear due to your temporary files. Many applications create temporary files, and these files can sometimes cause various problems.
To fix this and many other problems, it’s highly advised to remove all temporary files. To do that, just follow the above steps.
After doing that, check if the problem is resolved. If you want, you can also use Disk Cleanup to clean the temporary files and fix this problem.
If you want an advanced tool that will clean temporary files along with old and unnecessary files, we suggest that you try dedicated registry cleaner tools.
3. Check your antivirus
If you’re getting List index out of bounds error on your PC, the problem might be your antivirus software. Sometimes your antivirus can block certain files and that will prevent applications from running properly.
To check if your antivirus is the problem, you need to disable certain antivirus features or even disable your antivirus altogether. If that doesn’t help, you might even have to remove your third-party antivirus.
This is perfectly safe to do on Windows 10 since Windows Defender will still protect your system, even if you remove your antivirus.
Once you remove your antivirus, check if the problem is still there. If removing the antivirus solves the problem, you should consider switching to a different antivirus solution.
At the same time, if you need a strong alternative you should choose from the best antivirus solutions for Windows 10 to remove the error once for all.
4. Try running the application in Compatibility mode
- Right-click the application that is giving you this message and choose Properties from the menu.
- Go to the Compatibility tab and check Run this program in compatibility mode for option. Now select an older version of Windows. Click Apply and OK to save changes.
List index out of bounds error can sometimes appear if the application you’re trying to run isn’t fully compatible with Windows 10.
This can happen with older applications, but you might be able to fix the problem simply by running it in Compatibility mode.
In case you don’t know, Compatibility mode is a special feature that allows you to run old applications on Windows 10, and you can activate Compatibility Mode by doing as described above.
According to users, using the Compatibility mode might fix this problem for you, but you might have to experiment with different settings until you find the one that works for you.
5. Update the application to the latest version
Some PC issues are hard to tackle, especially when it comes to corrupted repositories or missing Windows files. If you are having troubles fixing an error, your system may be partially broken.
We recommend installing Restoro, a tool that will scan your machine and identify what the fault is.
Click here to download and start repairing.
If you’re getting List index out of bounds error perhaps the application you’re trying to run is the problem. Certain applications can give you this error if they encounter any bugs or glitches.
The best way to avoid glitches is to keep the application up to date. If you encounter this problem, try to download the latest version of the application and install the latest updates.
After the updates are installed, check if the problem is still there.
6. Rename the Skype directory
- Close Skype completely on your PC.
- Press Windows Key + R. Now enter %appdata% and press Enter or click OK.
- Locate the Skype directory and change its name to skype.old.
- After doing that, start Skype again and check if the issue is still there.
Many users reported List index out of bounds error while trying to run Skype.
This error can occur if your files are corrupted, but you might be able to fix the problem by renaming your Skype directory.
This is a simple solution, but keep in mind that it only works with Skype. If you have this problem with any other application, you might want to try using a different solution.
7. Reinstall the problematic application
According to users, sometimes the only way to fix this problem is to reinstall the problematic application. List index out of bounds error can appear in almost any application, and sometimes the only way to fix this problem is to uninstall it.
In case you don’t know, a desirable method is to find a dedicated program like an efficient uninstaller software for your Windows 10 PC. That way, you can safely reinstall the affected application and thus resolve this kind of error.
You should know that such programs can also remove any file and registry entries associated with it from your PC.
Once you remove the application, install the latest version again and the problem should be permanently resolved.
8. Perform a clean boot
- Press Windows Key + R. Type msconfig and click OK or press Enter.
- The System Configuration window will now appear. Navigate to the Services tab and check Hide all Microsoft services option. Now click the Disable all button.
- Now head over to the Startup tab and click Open Task Manager.
- When Task Manager opens, you’ll see a list of startup applications. Right-click the first application on the list and choose Disable from the menu. Repeat this for all startup applications.
- Once you disable all startup applications, you need to go back to the System Configuration window. Click Apply and OK to save changes and restart your PC.
If you keep getting List index out of bounds error, the problem might be a third-party application on your PC.
To find the problematic application, it’s advised that you perform a clean boot and disable all startup applications and services.
You can do that by following the above steps.
Once your PC restarts, check if the problem is still there. If the issue doesn’t appear, it means that one of the startup applications or services was causing it.
To pinpoint the cause, it’s advised to enable applications and services one by one or in groups until you find the cause of the problem.
Once you find it, remove the problematic application and the issue should be permanently resolved.
As you can see List index out-of-bounds error can be quite problematic and prevent you from running your favorite application.
However, you should be able to fix this problem simply by reinstalling the problematic application or by updating it.
If that doesn’t work, feel free to try any other solution from this article.
Newsletter
I’m getting an index out of bounds error when I request the last element in the list for a C# Windows Form Application.
Does anyone know what might be causing this because it literally makes no sense whatsoever. It’s as if the computer is miscalculating. The size is supposedly 17, but everything above index 5 gives an error. Once logic goes out the window, I’ve got nothing left. Perhaps there’s something weird going on behind the scenes that someone else may have encountered before?
List<string> words = new List<string>();
List<string> words = new List<string>();
string word = "";
int idx = 0;
while (idx < notes.Length)
{
word += notes[idx];
if (notes[idx] == ' ')
{
words.Add(word);
word = "";
}
++idx;
}
string notes1 = "";
string notes2 = "";
string notes3 = "";
int one_third = words.Count / 3;
int two_thirds = (words.Count / 3) * 2;
int k;
for (k = 0; k < one_third; k++)
notes1 += words.ElementAt(k) + ' ';
for (k = one_third; k < two_thirds; k++)
notes2 += words[k] + ' ';
for (k = two_thirds; k < words.Count; k++)
notes3 += words[k] + ' ';
notesLabel1.Text = notes1;
notesLabel2.Text = notes2;
notesLabel3.Text = notes3;
++++++++++++++++++++++++++++++++++++++++++++++
FOUND THE PROBLEM!!!!!!
Basically, I overworked myself yesterday so my brain was fried by the end of the day and I was irritable. The function code works just fine unless, like many have said, the notes string is empty. I knew that the notes string wasn’t empty because it posts just fine without the +1 portion in the for-loop. BUT I FORGOT ABOUT ONE THING. The first ‘item’ that gets posted to the form is the first ‘item’ in the array I have in my program. Even though the item notes in question do indeed have 17 words, it’s the second item in the list. The first item in the list gets posted when the application loads and I simply scroll over to the item with the 17 word notes. The first item that’s posted doesn’t have notes so the first time that function is called, the argument is an empty string. OOPS! feels dumb
Thanks, everyone!! I appreciate you taking the time to help fix my nonsense here. haha
asked May 10, 2013 at 22:48
23
The errors are fairly straightforward, and we can explain all the symptoms.
Firstly note that:
List<string> words = new List<string>();
gives you an EMPTY array for which words.Count == 0
. In particular, note that words.ElementAt(0)
will throw.
Ok so with this line (which throws):
string the_word = words.elementAt(words.Count - 1);
Clearly (words.Count - 1)
is -1
and thus the error.
The following code DOES NOT throw an error:
for (k = 0; k < words.Count / 3; k++) notes1 += words.ElementAt(k) + ' ';
because the for loop runs while k < 0
, and so the loop doesn’t even execute a single iteration.
Now this one:
for (k = 0; k < words.Count / 3 + 1; k++) notes1 += words.ElementAt(k) + ' ';
This loop will run while k < 1
so it will execute once with k=0
, and thus ElementAt(0)
will throw because the array is empty.
Finally:
for (k = 0; k < words.Count; k++) notes1 += words.ElementAt(k);
Again this will not iterate even once. words.Count
is 0, so it runs while k < 0
which means it doesn’t iterate.
answered May 10, 2013 at 23:12
Matthew WatsonMatthew Watson
103k10 gold badges148 silver badges261 bronze badges
3
if words is empty, you are getting words.Count — 1 means -1, how can you do:
words.elementAt(-1);
answered May 10, 2013 at 22:50
diwatudiwatu
5,6325 gold badges36 silver badges60 bronze badges
6
Notice something in your code down below:
if (notes[idx] == ' ')
{
words.Add(word);
word = "";
}
You add to your words
List when the notes is empty? like notes[idx] == ' '
Could it be testing if it is not empty before you add it, like?
if (!String.IsNullOrEmpty(notes[idx]))
{
words.Add(word);
word = "";
}
Just guessing.
Original Post:
Check the count first before doing elementAt, so instead of:
string the_word = words.elementAt(words.Count - 1);
Do like :
string the_word = words.Count>0 ? words.elementAt(words.Count - 1) : "";
And probably it would be good if you check it with messagebox just for debugging if the count is really 17 as you claim like:
MessageBox.Show(words.Count);
string the_word = words.Count>0 ? words.elementAt(words.Count - 1) : "";
Update:
I did a sampling in my own PC with the code below that came from your posting and it works with no error. Could it be that you’re using multi-threading and it tries to change the value of your words
List?
List<string> words = new List<string>();
String notes1="";
int k;
words.Add("The quick brown fox jumps over the lazy dog.");
string the_word = words.ElementAt(words.Count - 1);
MessageBox.Show(the_word);
for (k = 0; k < words.Count / 3; k++)
{ notes1 += words.ElementAt(k) + ' '; }
for (k = 0; k < words.Count / 3 + 1; k++)
{ notes1 += words.ElementAt(k) + ' '; }
answered May 10, 2013 at 22:57
EdperEdper
9,1041 gold badge27 silver badges46 bronze badges
3
If you’re code only contains a single space, then it will only have one word in the array.
The result of one_third
and two_thirds
will then always be zero IF words.Count
is less than 3. Which means the rest of your code will never find them.
When you add +1 to the words.count, then it will go outside the bounds of the array.
All in all this is a really round about (and error filled) way of splitting the notes.
UPDATE
I used the following test code:
Char[] notes = "there are seventeen words in this list make the most of them because it really counts here".ToCharArray();
List<string> words = new List<string>();
string word = "";
int idx = 0;
while ( idx < notes.Length ) {
word += notes[idx];
if ( notes[idx] == ' ' ) {
words.Add(word);
word = "";
}
++idx;
}
string notes1 = "";
string notes2 = "";
string notes3 = "";
int one_third = words.Count / 3;
int two_thirds = ( words.Count / 3 ) * 2;
int k;
for ( k = 0; k < one_third +1; k++ )
notes1 += words.ElementAt(k) + ' ';
for ( k = one_third; k < two_thirds; k++ )
notes2 += words[k] + ' ';
for ( k = two_thirds; k < words.Count; k++ )
notes3 += words[k] + ' ';
MessageBox.Show(notes1);
and had no errors. The result was not exactly what you normally expect, but there were no errors. Note that I put in the +1
that was the stated problem.
An alternative way to accomplish this is:
String notes = "there are seventeen words in this list make the most of them because it really counts here";
Int32 one_third = notes.Trim().Split(' ').Count() / 3 + 1;
String matchString = @"^(w+b.*?){" + one_third.ToString() + "}";
String notes1 = Regex.Match(notes, matchString).ToString();
notes = notes.Remove(0, notes1.Count()).Trim();
String notes2 = Regex.Match(notes, matchString).ToString();
notes = notes.Remove(0, notes2.Count()).Trim();
String notes3 = notes;
answered May 10, 2013 at 23:32
NotMeNotMe
87.1k27 gold badges172 silver badges244 bronze badges
2
Sorry but you’re just plain wrong.
The following code in a new console app outputs:
Some nine word
note which I'm
stretching here now
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StackOverflow16491866 {
class Program {
static void Main(string[] args) {
string notes = "Some nine word note which I'm stretching here now ";
List<string> words = new List<string>();
string word = "";
int idx = 0;
while (idx < notes.Length) {
word += notes[idx];
if (notes[idx] == ' ') {
words.Add(word);
word = "";
}
++idx;
}
string notes1 = "";
string notes2 = "";
string notes3 = "";
int one_third = words.Count / 3;
int two_thirds = (words.Count / 3) * 2;
int k;
for (k = 0; k < one_third; k++)
notes1 += words.ElementAt(k) + ' ';
for (k = one_third; k < two_thirds; k++)
notes2 += words[k] + ' ';
for (k = two_thirds; k < words.Count; k++)
notes3 += words[k] + ' ';
Console.WriteLine(notes1);
Console.WriteLine(notes2);
Console.WriteLine(notes3);
Console.ReadLine();
}
}
}
In short, your code works when notes
is populated correctly.
Note that it requires a trailing space in notes
to split into 3x3x3 instead of 2x2x5
The simplified form of your code is…
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StackOverflow16491866 {
class Program {
static void Main(string[] args) {
string Notes = "Some nine word note which I'm stretching here now";
List<string> Words = Notes.Split(' ').ToList();
int WordsPerLine = (int)Words.Count/3;
string Note1 = string.Join(" ", Words.GetRange(0, WordsPerLine));
string Note2 = string.Join(" ", Words.GetRange(WordsPerLine, WordsPerLine));
string Note3 = string.Join(" ", Words.GetRange(WordsPerLine * 2, Words.Count - WordsPerLine * 2 - 1));
Console.WriteLine("{0}n{1}n{2}", Note1, Note2, Note3);
Console.ReadLine();
}
}
}
answered May 11, 2013 at 0:00
BasicBasic
26.1k24 gold badges112 silver badges197 bronze badges
2
На форме есть компонент sListBox1 (разновидность ListBox1 в Alpha Controls).
Туда добавляются элементыsListBox1.Items.Add('..........');
В коде мне нужно перебрать все элементы этого sListBox1 . Работа идет в потоке.
procedure TMyThread.Execute;
var
i:integer;
begin
for i:=0 to form1.sListBox1.Items.Count-1 do
begin
full_filename_path:=form1.sListBox1.Items[i];
filename_name:=ExtractFileName(form1.sListBox1.Items[i]);
//.....
end;
end;
end;
При добавлении более одного файла, возникает ошибка
Ошибка listerror list index out of bounds (1).
Как исправить ошибку listerror list index out of bounds?
-
Вопрос заданболее трёх лет назад
-
4708 просмотров
Пригласить эксперта
Границы счётчика FOR
вычисляется один раз перед циклом. Если в основном потоке меняется form1.sListBox1
, то может не оказаться нужного Items[i]
. Или проверяйте его наличие. Или используйте цикл WHILE
, в котором сравнение счётчика с условием будет проверяться каждый раз.
Замечание: оптимизатор может изменить направление FOR
.
Совет: не связывайте модули.
То есть у TMyThread
должен быть свой TStrings
, в который нужно передать form1.sListBox1.Items
.
А если в TMyThread.Execute с использованием Synchronize получить содержимое листбокса и дальше работать с этим содержимым?
-
Показать ещё
Загружается…
14 апр. 2023, в 11:28
1000 руб./за проект
14 апр. 2023, в 11:19
3500 руб./за проект
14 апр. 2023, в 10:45
50000 руб./за проект
Минуточку внимания
Здравствуйте. установил Orion 1.20 (устанавливал и 1.12 с дополнением ) происходит следующее, призапуске АБД вылетает ошибка «list index out of bound 0» (системник новый, стоит windows 8.1 ( на свой дровянной ноут устанавливаю, всё работает)).
в логе ошибок ориона следующее:
hint соединение с сервером
error ошибка приложения: list index out of bounds (0)
error Event translate error: не удается открыть базу данных «orion120» запрашиваемую именем входа. Не удалось выполнить вход
(INSERT INTO pLogData (Guid, NumCom, TimeVal, IDComp, Par1, Par2, Par3, Par4, Event, IndexKey, RazdIndex, HozOrgan, HozGuest, Remark, DoorIndex, Mode, DeviceTime, VEvent, ZReserv, ZoneIndex, ReaderIndex, Sing, tpRzdIndex, tpPar4, IndexZone, tpIndex ) VALUES (Newld(), null, :pTimeVal, 0, null, null, null, null, 1652, null, null, null, null, :pRemark, null, null, :pDeviceTime, null, null, -1, null, null, null, null, null, null )