Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2014, 23:05   #1
Lokki23
Пользователь
 
Регистрация: 19.11.2013
Сообщений: 57
Печаль access violation at address 00000100. Read of address 00000100.

Блин возникла такая проблема : ошибка access violation at address 00000100. Read of address 00000100.

работаю с ComboBox-ами которий созданы динамически .

Написал код при котором при виборе одного значение в ComboBox в другом вибрать его уже нельзя . Мне нужно удалять по фамилии то есть например вибрал у 1 ComboBox-е Тичук физика то у 2 ComboBox-е Тичук матиматика(короче все поля с Тичук ) вибрать уже не льза тоесть они удаляются из вибора .

Вот мой код:
Код:
for(int i = 0; i<ComBox/20;i++)
	{

	 if((CBox[y]->Text !="")&&(y!=p))
		{

		   A[0]= '\0';

		AnsiString A1 =CBox[y]->Text;

		  strcpy(A, A1.c_str());/// где-то тут мне кажится ошибка


	 for(int j = 0;j<30;j++)
	 {
		 if(A[j] == ' ')
		 {
			 A[j] = '\0';
			  h =j;
			  break;
		 }
	 }


	 for(int i=0;i<CBox[o]->Items->Count;i++)
	 {

	   B[0] = '\0';                          /// где-то тут мне кажится ошибка
AnsiString B1 = CBox[o]->Items[i].Text;/// где-то тут мне кажится ошиб
	 strcpy(B,B1.c_str());    /// где-то тут мне кажится ошибка


	 for(int j = 0;j<30;j++)
	 {
		 if(B[j] == ' ')
		 {
			 B[j] = '\0';
			 break;

		 }
	 }

	 for(int l = 0;l<=h;l++)
			{
		 if(A[l] == B[l])
		 {
		  m++;
		 }
		 if(m == h)
		 {
		   CBox[o]->Items->Delete(i);
		 }
		 }
	 }

		}
		y = y+20;
		m = 0;
	}
Ошибка возникает когда в 1 ComboBox уже вибрано поле и при нажатии на другоэ поле вилитаэт ошибка . Но притом когда в етих ComboBox записано по 1 полю то ошибки нету . Мне кажется там чтото с перезаписю char-ов.

Уже не знаю что делать

Спасибо заранее

Последний раз редактировалось Stilet; 25.01.2014 в 17:10.
Lokki23 вне форума Ответить с цитированием
Старый 24.01.2014, 09:41   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

А вы уверены, что в момент копирования в A1 есть данные?
waleri вне форума Ответить с цитированием
Старый 24.01.2014, 09:52   #3
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Цитата:
for(int i=0;i<CBox[o]->Items->Count;i++)
а что это за переменная "o" в квадратных скобках, может все таки там должен быть "0"?
Что бы еще такого сделать, чтобы ничего не делать?

Последний раз редактировалось DpolenST; 24.01.2014 в 09:55.
DpolenST вне форума Ответить с цитированием
Старый 24.01.2014, 10:15   #4
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

какого типа В?
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 24.01.2014, 15:14   #5
Lokki23
Пользователь
 
Регистрация: 19.11.2013
Сообщений: 57
По умолчанию

В А1 полюбому должны быть дание эсть if((CBox[y]->Text !="")&&(y!=p))

переменная o это немер ConboBox-а (один из масива котория я создал)

А и В это масивы из 30 елементов

Я не знаю може переполняется как-то масив?
Lokki23 вне форума Ответить с цитированием
Старый 24.01.2014, 15:23   #6
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Код:
for(int i = 0; i<ComBox/20;i++)
.......................................
AnsiString B1 = CBox[o]->Items[i].Text;/// где-то тут мне кажится ошиб
.........................................
CBox[o]->Items->Delete(i);
сделайте обратный цикл, скорей всего в конце цикла вы обращаетесь к несуществующему элементу, так как после удаления очередного элемента общее их количество уменьшается
Что бы еще такого сделать, чтобы ничего не делать?

Последний раз редактировалось DpolenST; 24.01.2014 в 15:27.
DpolenST вне форума Ответить с цитированием
Старый 24.01.2014, 15:24   #7
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
Я не знаю може переполняется как-то масив?
Нет. Ошибка явно говорит, что у вас неинициализирован указатель (не создан объект) и вы пытаетесь из него читать по смещению 100 (это может быть и чтение какого-то элемента массива при указателе на массив равном 0 или около того, может быть поле объекта без создания объекта,...)

Показывайте объявление и созадние ваших массивов.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 25.01.2014, 16:46   #8
Lokki23
Пользователь
 
Регистрация: 19.11.2013
Сообщений: 57
По умолчанию

Нашол проблему и решил

Кароче CBox[o]->Items[i].Text ета фигня не возвращает отдельною стороку а вивосит весь список

Нужно использывать CBox[o]->Items->Strings[і] отак как то...

Да всем спасибо за помощ нашол ешо пару проблем и переделал.
Lokki23 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000. Arktos1995 Общие вопросы Delphi 5 12.12.2012 22:33
Access violation at address XXXXXX in module 'YYYYYY'. Read of address ZZZZZZ' nik-kang Помощь студентам 0 18.06.2012 22:22
Ошибка: "Access violation at address 0045E503 in module 'Project1.exe'. Read of address 00316777. Katexxxsa Общие вопросы Delphi 1 03.10.2011 23:16
Access violation at address 004733C4 in module 'loginin.exe'. Read of address 00000048' pavellyba Общие вопросы Delphi 2 18.08.2011 10:32
Access violation at address 00447E73 in modul Project.exe. Read of address 00000057. ArtGrek Общие вопросы Delphi 40 12.03.2011 22:03