mirk |
Отправлено: 14.07.2003, 10:13 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 10
|
Объясните плиз где ошибка: При работе указанного ниже кода добавление в базу проходит нормально но при закрытие программы выходит следующая ощибка: Project brak.exe raised exception class EInvalidPointer with message 'invalid pointer operation'.
CODE |
TRadioButton *my_button[30];
my_button[0] = rbVppo1;
my_button[1] = rbVppo2;
my_button[2] = rbVppo3;
my_button[3] = rbVppo4;
my_button[4] = rbVppo5;
my_button[5] = rbVppo6;
my_button[6] = rbVppo7;
my_button[7] = rbStat1;
my_button[8] = rbStat2;
my_button[9] = rbStat3;
my_button[10] = rbStat4;
my_button[11] = rbStat5;
my_button[12] = rbStat6;
my_button[13] = rbNat1;
my_button[14] = rbNat2;
my_button[15] = rbNat3;
my_button[16] = rbNat4;
my_button[17] = rbNat5;
my_button[18] = rbNat6;
my_button[19] = rbNat7;
my_button[20] = rbDnvc1;
my_button[21] = rbDnvc2;
my_button[22] = rbDnvc3;
my_button[23] = rbDnvc4;
my_button[24] = rbDnvc5;
my_button[25] = rbDnvc6;
my_button[26] = rbDnvc7;
my_button[27] = rbDnvc8;
my_button[28] = rbDnvc9;
my_button[29] = rbDnvc10;
my_button[30] = rbDnvc11;
for(int i = 0; i <= 6; i ++)
{
if(my_button[i]->Checked)
{
tE->FieldByName("Perobr")->AsString=my_button[i]->Caption;
tE->FieldByName("Perobr_n")->AsString=IntToStr(i);
}
}
for(int i = 13; i <=19; i ++)
{
if (my_button[i]->Checked)
{
tE->FieldByName("Nacio")->AsString=my_button[i]->Caption;
tE->FieldByName("Nacio_n")->AsString=IntToStr(i);
}
}
for(int i = 7; i <= 12; i ++)
{
if (my_button[i]->Checked)
{
tE->FieldByName("Status")->AsString=IntToStr(i);
}
}
for(int i = 20; i <=30; i ++)
{
if(my_button[i]->Checked)
{
tE->FieldByName("Lon")->AsString=IntToStr(i);
}
}
| |
|
Asher |
Отправлено: 14.07.2003, 11:20 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Интересно, как при TRadioButton *my_button[30]; должна рассматриваться эта строка — my_button[30] = rbDnvc11;
и соответственно в последнем цикле при i = 30 доступ к my_button[30]->Checked должен приводить к ошибке работы указателя.
|
|
mirk |
Отправлено: 14.07.2003, 12:07 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 10
|
заменил *my_button[30] на *my_button[31], все заработало.
Сенк большое. Но все равно я не совсем понял .*my_button[30] всего 30, радиобатонов тоже 30, так зачем же ставить *my_button[31]? |
|
Asher |
Отправлено: 14.07.2003, 12:36 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
[x] x — количество элементов массива, в твоём случае все-таки 31, т.к. индексы элементов с 0 до 30, итого 31
|
|
mirk |
Отправлено: 14.07.2003, 12:42 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 10
|
QUOTE (Asher @ 14/07/2003, 13:38) | [x] x — количество элементов массива, в твоём случае все-таки 31, т.к. индексы элементов с 0 до 30, итого 31 |
Понял, с ручника снимаюсь |
|